为什么Java应用最广泛?
从互联网到企业平台,Java是应用最广泛的编程语言,原因在于:
-
Java是基于JVM虚拟机的跨平台语言,一次编写,到处运行;
-
Java程序易于编写,而且有内置垃圾收集,不必考虑内存管理;
-
Java虚拟机拥有工业级的稳定性和高度优化的性能,且经过了长时期的考验;
-
Java拥有最广泛的开源社区支持,各种高质量组件随时可用。
Java语言常年霸占着三大市场:
-
互联网和企业应用,这是Java EE的长期优势和市场地位;
-
大数据平台,主要有Hadoop、Spark、Flink等,他们都是Java或Scala(一种运行于JVM的编程语言)开发的;
-
Android移动平台。
这意味着Java拥有最广泛的就业市场。
推荐的Java学习路线图如下:
-
首先要学习Java SE,掌握Java语言本身、Java核心开发技术以及Java标准库的使用;
-
如果继续学习Java EE,那么Spring框架、数据库开发、分布式架构就是需要学习的;
-
如果要学习大数据开发,那么Hadoop、Spark、Flink这些大数据平台就是需要学习的,他们都基于Java或Scala开发;
-
如果想要学习移动开发,那么就深入Android平台,掌握Android App开发。
无论怎么选择,Java SE的核心技术是基础,这个教程的目的就是让你完全精通Java SE!
名词解释
-
JDK:Java Development Kit
-
JRE:Java Runtime Environment
简单地说,JRE就是运行Java字节码的虚拟机。但是,如果只有Java源码,要编译成Java字节码,就需要JDK,因为JDK除了包含JRE,还提供了编译器、调试器等开发工具。
二者关系如下:
┌─ ┌──────────────────────────────────┐
│ │ Compiler, debugger, etc. │
│ └──────────────────────────────────┘
JDK ┌─ ┌──────────────────────────────────┐
│ │ │ │
│ JRE │ JVM + Runtime Library │
│ │ │ │
└─ └─ └──────────────────────────────────┘
┌───────┐┌───────┐┌───────┐┌───────┐
│Windows││ Linux ││ macOS ││others │
└───────┘└───────┘└───────┘└───────┘
-
JSR规范:Java Specification Request
-
JCP组织:Java Community Process
为了保证Java语言的规范性,SUN公司搞了一个JSR规范,凡是想给Java平台加一个功能,比如说访问数据库的功能,大家要先创建一个JSR规范,定义好接
口,这样,各个数据库厂商都按照规范写出Java驱动程序,开发者就不用担心自己写的数据库代码在MySQL上能跑,却不能跑在PostgreSQL上。
所以JSR是一系列的规范,从JVM的内存模型到Web程序接口,全部都标准化了。而负责审核JSR的组织就是JCP。
一个JSR规范发布时,为了让大家有个参考,还要同时发布一个“参考实现”,以及一个“兼容性测试套件”:
-
RI:Reference Implementation
-
TCK:Technology Compatibility Kit
比如有人提议要搞一个基于Java开发的消息服务器,这个提议很好啊,但是光有提议还不行,得贴出真正能跑的代码,这就是RI。如果有其他人也想开发这样
一个消息服务器,如何保证这些消息服务器对开发者来说接口、功能都是相同的?所以还得提供TCK。
通常来说,RI只是一个“能跑”的正确的代码,它不追求速度,所以,如果真正要选择一个Java的消息服务器,一般是没人用RI的,大家都会选择一个有竞争力
的商用或开源产品。
java代码是如何运行的
先用javac把Hello.java编译成字节码文件Hello.class,然后,用java命令执行这个字节码文件:
┌──────────────────┐
│ Hello.java │<─── source code
└──────────────────┘
│ compile
▼
┌──────────────────┐
│ Hello.class │<─── byte code
└──────────────────┘
│ execute
▼
┌──────────────────┐
│ Run on JVM │
└──────────────────┘
可执行文件javac是编译器,而可执行文件java就是虚拟机。
给虚拟机传递的参数Hello是我们定义的类名,虚拟机自动查找对应的class文件并执行。
标签:Java,JVM,day01,Hello,路线,JSR,java,虚拟机
来源: https://www.cnblogs.com/luoxucheng97/p/14793065.html