10. 在Debian上使用java

  • 平台:野火imx6ull开发板

  • 系统:Debian

  • java版本:openjdk version “11.0.6” 2020-01-14

注意:此处的操作是在野火imx6ull开发板上(运行的是Debian系统),而非虚拟机。

10.1. java简介

Java是一种广泛使用的计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。

Java介于编译型语言和解释型语言之间。编译型语言就是我们常见的如C、C++,代码是直接被编译器编译成会被代码,通过汇编产生目标文件,最后通过链接器生成对应的机器码执行,但是不同的平台(x86、ARM等)CPU的指令集不同,因此,需要编译出每一种平台的对应机器码,这就需要让不同的编译器编译生成不同的机器码,在跨平台中是极其麻烦的,因为每次修改代码都需要重新编译。而解释型语言如Python则没有这个问题,Python代码可以由解释器直接加载源码然后运行,但是运行效率比较低,因为它是在运行的时候才解析。而Java是将代码编译成一种“字节码”,它类似于抽象的CPU指令,然后,针对不同平台编写虚拟机,不同平台的虚拟机负责加载字节码并执行,这样就实现了一次编写可以随意跨平台运行的效果。而对于虚拟机,需要为每个平台分别开发,当然这些都是对java官方而言,为了保证不同平台、不同公司开发的虚拟机都能正确执行Java字节码,SUN公司制定了一系列的Java虚拟机规范。从实践的角度看,JVM的兼容性做得非常好,低版本的Java字节码完全可以正常运行在高版本的JVM上。

为什么要学Java?

因为Java目前是全球排名第一的编程语言,Java工程师也是市场需求最大的软件工程师,选择Java,就是选择了高薪。

Java被广泛应用的原因主要在于:

  • Java是基于JVM虚拟机的跨平台语言,一次编写可以随意跨平台运行;

  • Java是高级语言,而且有内置垃圾收集机制,不必考虑内存管理、内存泄漏的问题;

  • Java虚拟机拥有非常好的稳定性和极高的工作效率,并且经过了长时期的考验;

  • Java还有非常庞大的开源社区与数量众多的开发者,各种高质量组件随时可用,不必重发造轮子。

10.2. 更新Debian软件包的索引

为了确保我们的版本是最新版本,让我们使用apt命令更新本地apt包索引和升级系统:

sudo apt-get update
sudo apt-get -y upgrade

-y 标志将确认我们同意所有要安装的项目。

10.3. 手动安装java

在这里是安装默认的jdk,也就是openjdk,版本号是11.0.6。

sudo apt-get -y install default-jdk

在这里会自动将java相关的依赖都安装进来。

在安装完成后,可以通过以下命令查看是否安装成功,如果安装成功则会输出openjdk的版本信息“openjdk version “11.0.6” 2020-01-14”:

java -version

openjdk version "11.0.6" 2020-01-14
OpenJDK Runtime Environment (build 11.0.6+10-post-Debian-1deb10u1)
OpenJDK Server VM (build 11.0.6+10-post-Debian-1deb10u1, mixed mode)

10.4. 关于OpenJDK

OpenJDK是Java SE平台版的开源和免费实现,它是Sun公司(现在已经被Oracle公司收购)于2006年开发的结果。它使用了GNU GPL开源协议,这代表着它是可以被免费使用的。它使用C ++和Java语言编写的,支持不同的操作系统,如FreeBSD,Linux,Windows,MacOS。

一般来说我们都会将OpenJDK与OracleJDK来比较一下,可以简单认为,OpenJDK是免费的社区版,而OracleJDK则是收费的企业版软件。

它们之间的区别主要如下:

Oracle与OpenJDK之间比较

OracleJDK

OpenJDK

执照

它是根据GPL许可证授权的

它是根据GPL许可证授权的

性能

根据Sun JDK的开发和实现提供性能

提供由OracleJDK之上的一些供应商开发的高性能

可扩展性

根据Sun的实施

可以使用其他库或OracleJDK进行改进

费用

Sun的官方执行许可证

开源和免费实施可供免费使用

速度

由Sun开发决定

第三方供应商将通过进行一些调整来提高JVM的速度

便于使用

可以与任何应用程序开发一起使用

可以与任何应用程序开发和其他开源工具一起使用,以提高开源实现模型的性能。

在一般的嵌入式开发中,使用OpenJDK早已足够。

10.5. 编写java代码

既然正确安装了java的开发环境,那么此时可以编写java的代码,根据程序员的代码,第一个肯定是hello world啦,首先创建一个HelloWorld.java文件,然后编写以下代码:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}

这段java代码的作用就是打印“Hello World”字符串到屏幕上。

java规定,某个类定义的public static void main(String[] args)是java程序的固定入口方法,因此,Java程序总是从main方法开始执行,而main方法中只调用了System.out.println(“Hello World”);函数打印一个“Hello World”字符串。

java源码本质上是一个文本文件,我们需要先用javac把这个HelloWorld.java编译成字节码文件HelloWorld.class,然后,用java命令执行这个字节码文件:

编译生成字节码文件,如果没啥错误,下面这个命令是不会有输出的,但是会在当前文件夹下生成一个HelloWorld.class文件,它是字节码文件:

➜  ~ javac HelloWorld.java

➜  ~ ls

HelloWorld.class HelloWorld.java

接着使用java虚拟机执行这个字节码文件:

➜  ~ java HelloWorld

Hello World

给虚拟机传递的参数HelloWorld是我们定义的类名,虚拟机自动查找对应的class文件并执行。

好了,本章的介绍就到这里结束了,此处仅验证java可以在Debian开发板上使用。