1.买一些入门的书籍,如:java第一行代码、java核心技术卷、java从入门到精通。
2.thinking in java java编程思想(学有余力)。
3.每天结合PPT预习。
4.what:怎么用API 主要学习的内容
how:怎么实现 源码
why:为什么这样设计 架构
·····················································································································································································
java语言版本:
1.jdk(Oracle) VS Openjdk
2009年sun被Oracle收购之前,将jdk源码开源,形成了Openjdk,但是在sun开源jdk源代码的时候,其中一部分源码(小部分非核心功能),因为产权问题,无法完全开源。
Openjdk中,只包含jdk中最核心的功能,还有其他的一些三方实现的功能或是插件,Openjdk是jdk的极简版本。
关于Openjdk和jdk的源代码是有关系的:包含在Openjdk源代码中的绝大部分代码和Oracle jdk一模一样。
jdk可以理解为Openjdk的一个分支:不仅大家的代码是相同的,而且,Oracle jdk还会与jdk保持同步
同时,一旦Oracle jdk发现Openjdk中的一些bug,Oracle会修复这些bug,并把这些修复bug的代码重新同步到jdk中。
IBM、Google Docs、Facebook都从都从Openjdk中拿到源代码,然后修改增加
2.我们这四个月中都是jdk8
(1)直到今天,国内绝大部分公司,所使用的版本依然是jdk8
(2)为什么大家都用jdk8?
商业公司—>求稳
LTS:long time suppor—长期支持版本—维护周期长—至少三年 —稳定
而短期支持版本—维护周期短—半年----不稳定
从jdk9开始每半年发布一次,在这些快速迭代的版本中,
jdk8-----jdk11-----jdk17属于LTS
·····················································································································································································
java语言的特点:
高级语言计算机本身是不认识的,计算机只认识二进制01,一定有一个工具,帮助我们将我们的程序转化为计算机可以识别的对应到机器指令级别的二进制序列。
1.编译型语言:用这种语言写出的代码,首先通过编译器的编译,全部转化成目标代码(二进制可执行文件 .exe),然后依次在操作系统中执行。
2.解释型语言:转化一句,执行一句
java语言是解释型的:.java(java源代码)—>.class(字节码文件)—>jvm,jvm对.class转化一句,执行一句。
java具有健壮性:没有指针、提供异常机制(让你有机会对自己的错误进行修复)
java具有动态性:动态加在字节码文件运行。
分布式:java语言天生对网络通信有很好的的支持,易于实现分布式。
C、C++是直接运行在操作系统上的,而java是运行在jvm中,而jvm运行在操作系统上,所有java在时间空间所消耗的代码略高于C、C++。
跨平台性:
·····················································································································································································
java程序运行原理
为此,我么做了如下演示:
首先在E:\JDK\bin目录下创建一个HelloWord.java文件,然后进行以下操作,java HelloWorld.class出错,要注意,应当是java HelloWorld。java+类名,这一行进行了如下操作:java命令首先启动了一个jvm,然后jvm就会加载类名对应的字节码文件(HelloWorld.class文件),紧接着就会执行这个类中的main方法。
在没有配置path环境变量的情况下:
如果把HelloWorld.java文件放在其他目录下,就会报错,因为javac是一个工具,他不是操作系统自带的,所以如果不做任何预处理,操作系统并不知道javac是个什么东西。E:\JDK\bin目录下有javac.exe,在这个目录下没出错,是因为操作系统默认会在当前目录下查找你这个java命令所对应的的程序。
配置path环境变量官方推荐的方式:
1.JAVA_HOME 环境变量:E:\JDK
2.配置path环境变量:%JAVA_HOME%\bin
·····················································································································································································
作业:
1:独立编写Hello World程序。
2:Java语言是跨平台的吗?JVM是跨平台的吗?
Java语言是跨平台的,JVM不是跨平台的
不同平台需要安装对应版本的JVM才能运行(例如:windows系统有windows版的JVM,linux系统有linux系统的JVM)所以说JVM是不能跨平台的。
Java语言通过不同系统上的JVM(相当于一个桥梁)对Java语言进行编译和运行,所以说java是跨平台的,而JVM就是Java语言跨平台的关键。
3.设置环境变量使QQ或者微信可以在任意目录下,通过命令行执行。