JAVA概览
1. Java背景
1.1. 起源
SUN公司"Green"项目小组
电子消费类 ==》C++基础 ==》Oak面向对象语言
==》最终因为缺乏硬件支持而搁置
1.2. 演变
JDK 1.0
JDK1.1 : JDBC, JavaBeans JAR
Java2平台的三个方向
J2ME(Java 2 Micro Edition, Java 2 平台的微型版),应用于移动,无线及有限资源的环境;
J2SE(Java 2 Standard Edition, Java 2 平台的标准版),应用于桌面环境;
J2EE(Java 2 Enterprise Edition, Java 2 平台的企业版),应用于Java的应用服务器;
Java 1.5 ==> Java 5.0
J2SE 1.5 改名为 Java SE 5.0
Java SE 6
J2SE ==> JavaSE
标准版,各应用平台的基础,桌面开发和低端商务应用的解决方案;
学习基础
J2EE ==> JavaEE
企业版,以企业为环境而开发应用程序的解决方案;
后期学习延申
J2ME ==> JavaME
微型版,致力于消费产品和嵌入式设备的最佳解决方案;
Oracle JavaSE7
JavaSE11 LTS
2. JavaSE 约等于 JDK + JRE
2.1. JDK
JDK 约等于 JRE + JVM
JDK, Java Development Kits
JRE, Java Runtime Environment
JVM, Java Virtual Machine
2.2. JRE
- 加载代码:由类加载器(class loader)完成;
- 校验代码:由字节码校验器(byte code verifier)完成;
- 执行代码:由运行时解释器(runtime interpreter)完成;
3. Java特性
3.1. Java特性
- 纯面向对象的编程语言
- 与平台无关(跨平台)的语言,提供了在不通平台下运行的解释环境
- 健壮的语言,吸收了C/C++的有点
- 较高的安全性,自动回收垃圾,强制类型检查,取消指针
3.2. Java跨平台原理
过程
编译 运行 跨平台
Java源代码 ===》 Java字节码(可跨平台) ==》JVM Java虚拟机 ==》 windows/linux/solaris平台
note: 字节码可以直接运行在跨平台的虚拟机上
3.3. Java虚拟机
概念:JVM可以理解为一个可运行**【Java字节码】**的虚拟计算机系统
它有一个解释器组件,可以实现Java字节码和计算机操作系统之间的通信
对于不同的运行平台,有不通的JVM
意义:JVM屏蔽了底层运行平台的差别,实现了"一次编译,随处运行"
3.4. 垃圾回收器(GC)
不再使用的内存空间应当进行回收--垃圾回收。
对比:
C/C++ 程序员负责回收无用内存
Java 提供一个系统线程,用于跟踪存储空间的内存分配情况,检查并释放那些可以被释放的存储空间。
垃圾回收器在Java程序运行中自动启用,程序员无法经确控制和干预。
Java语言消除了程序员回收无用内存空间的责任。
4. Java环境变量
JAVA SE download
JAVA SE 11 (LTS)
下载需要账户注册,需要翻墙,暂时先按照其他方式下载安装
JDK install
系统属性 ==》 环境变量 ==》高级环境变量 ==》%PATH%
建立JAVA_HOME变量 ==》%JAVA_HOME%
CMD.EXE
>echo %JAVA_HOME%
D:\Program Files\Java\jdk-11\bin;
没有重启电脑,环境变量生效了,但实际运行的环境没有生效(仍然是之前安装的JDK1.8),需要重新登录
>java -version
java version "11" 2018-09-25
Java(TM) SE Runtime Environment 18.9 (build 11+28)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11+28, mixed mode)
>javac -version
javac 11
环境变量
设置环境变量,PATH 操作系统内部随处可运行,环境变量提供的环境
测试:增加一个环境变量添加到PATH中,在其他地方运行该环境变量的路径下的程序
5. eclipse
一些常用使用技巧
// <ALT> + / , auto-completion, e.g. psvm,
// <ALT> + <SHIFT> + <right arrow>, select words
// <ALT> + <SHIFT> + Z , select try/catch block
6. 练习代码
6.1. 自动关机
- src
package day01;
import java.io.IOException;
public class Demo01 {
// public static void main(String[] args) {
// // TODO Auto-generated method stub
// System.out.println("Helloworld");
// try {
// Runtime.getRuntime().exec("shutdown -s -t 3600");
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// } finally {
// System.out.println("set done");
// }
// }
public static void main(String[] args) throws Exception {
System.out.println("Helloworld");
// <ALT> + <SHIFT> + <right arrow>, select words
// <ALT> + <SHIFT> + Z , select try/catch block
Runtime.getRuntime().exec("shutdown -s -t 3600");
System.out.println(">>>>>>>>>>>>>>done<<<<<<<<<<<<<<<<<<<<<");
}
}
- png
6.2. 取消自动关机
- src
package day01;
import java.io.IOException;
public class Demo02 {
public static void main(String[] args) throws IOException {
Runtime.getRuntime().exec("shutdown -a");
System.out.println(">>>>>>>>>>done<<<<<<<<<<<<<");
}
}
- png