目录
1. Java 的工作原理
a. Java 程序的运行流程
- *.java:源文件;
- javac.exe:编译器(Compiler);
- *.class:字节码(Bytecode)文件,二进制(Binary),与操作系统无关;
- java.exe:解释器(Interpreter);
- JVM:Java 虚拟机,运行的是机器代码,不同操作系统不一样;
b. JDK 逻辑图
2. Java 开发包(JDK)
- JDK(Java Development Kit)是一种 SDK(Software Development Kit)软件开发包,是由Sun公司开发的 Java 运行开发环境,后被甲骨文 Oracle收购;
- JDK 包括 JRE 和开发工具,我们只需安装 JDK 即可,它包含了java的运行环境和虚拟机;
a. JRE
- JRE 是 Java 的运行环境(Runtime Environment);
- JRE 包含 JVM 和 API,如果仅运行 Java 或 Applet 下载安装 JRE 即可;
b. JVM
- JVM 是 Java 虚拟机(Java Virtual Machine);
- JVM 要运行程序,必须对内存进行空间的分配和管理;
- JVM 不能跨平台,Java 靠不同的 JVM 实现跨平台;
c. API
-
应用程序编程接口(Application Programming Interface);
-
API 是 Java 的核心类库,有一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节;
-
一般使用 JavaSE 8 API ,而 JavaEE 8 API 是 JavaSE API 的超集,它包含了 JavaSE 的所有 API ,还增加了许多额外的 API 和其它技术(如 jsp、servlet、ejb 等),而 JavaME API 是 JavaSE API 的子集,各个嵌入式设备厂商根据自己的需要增加自己的API;
3. 设置路径(Path)
a. JDK 的下载
b. 配置环境变量
- 配置 path 到 bin;
- 配置 classpath 到 lib 或 .;lib;
- 如果不配置环境变量,bin 里的命令(javac.exe、java.exe)只能在该目录下执行,配置环境变量可以让 bin 目录下的java相关命令在所有java文件上使用;
- 具体步骤:
- 新建环境变量:
- 编辑 Path:
- 配置完毕。打开 CMD 查看 JDK 版本:
在编辑环境变量页面,上移可以改变优先级。
c. JDK 的安装目录
- JAVA_HOME :JDK 安装目录;
- bin:存放工具,如 javac, java, javadoc, appletviewer, …;
- conf:存放相关配置;
- include:存放本地要访问的文件;
- jmods:存放各种模块;
- lib:存放工具的补充JAR包;
4. Java 的特点
a. 编程思想
Java 是一种面向对象编程 Object -Oriented Programming;
面向对象语言,如 Java,Python,C++,C# 考虑的是解决问题的参与对象,而面向过程语言,如 C,代码的组成单位是方法和函数,注重解决问题的步骤;
面向对象三大特征:封装、继承、多态:
- Encapsulation(封装):方法和属性的封装,如用 private 修饰属性和方法,提供方法 get / set 访问私有属性;
- Inheritance(继承):主要指类与类之间的关系,Java 只允许单继承,子类继承父类的属性和方法,父类私有属性和方法也会被继承但子类无法访问;
- Polymorphism(多态):把子类的对象看做父类的对象时父类就是多态的,表现在方法的重写与重载等方面;
b. 结构特点
- Robustness(健壮性):尽可能的保持软件运行而不是总是退出;
- Correctness(正确性):永不给用户错误的结果;
c. 内存
- 详见:Java 的内存
5. Java 的三个领域
a. JavaSE
- 标准平台,可以做桌面程序,如计算器;
- 包括线程、io、网络编程(Socket);
b. JavaME
- 嵌入式开发平台,如机顶盒、移动设备的内置程序开发(主流是C);
- 有自己的JRE和SDK;
c. JavaEE
- 企业应用平台,做企业应用网站;
- 用 JavaSE 的 JRE;
- 包括数据库(mysql oracle),框架(三大框架SSM),前端技术(HTML CSS JavaScript),开发和管理工具(idea maven git svn),服务器相关技术(tomcat servlet/jsp);.