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开发板上使用。