Java版本:
JavaSE(Standard Edition):标准版,定位在个人计算机应用。(开发计算机桌面应用,桌面系统应用发展的不好,效率不高,远不如C++),必须先学SE
JavaEE(Enterprise Edition):企业版,定位在服务器端的应用,企业的后台服务器。(就业的首选)
JavaME(Micro Edition):微型版,定位在消费型电子产品的应用上(用的非常少,逐步消亡)物联网是基于安卓系统的,安卓开发是基于Java的,但并非JavaME,所以ME会被安卓取代。
EE完全包含SE,SE包含了一部分ME的API,ME与EE没有包含关系。所以要学EE,必须学习SE。
概念:
JDK(Java SE Development Kit)——Java标准版开发包,包含了:
- Java编译器(开发环境:javac命令)
- JRE(Java运行环境:Java Runtime Environment)
JRE包含了:JVM、库函数、运行所需文件(应用程序编程接口API:核心API、集成API、发布技术) - 常用Java类库
JVM用于执行文件;JRE用于加载外部环境,使程序运行起来;JDK提供了很多开发工具,帮助开发java程序,所以写程序必须安装JDK。
SUN公司给不同的操作系统提供了不同的虚拟机:
Java源文件经过**编译(javac)**生成class文件(字节码文件),然后把class文件给虚拟机JVM去执行
因为存在JVM,所以避免了程序直接同操作系统打交道。
程序源文件为:.java文件
一、编译:
javac: 调用javac去编译记事本文档,因为java虚拟机只认识字节码,所以需要通过javac把java源码编译成**.class字节码文件**。Javac在bin目录之下,之前把bin目录放在了path路径下,这样系统自动会去path路径下找到javac等exe文件去执行。
eg: javac -d . Hello.java
—— 生成Hello.class文件,为字节码文件,可以运行在java虚拟机上。
(-d . :用于设置编译生成的class文件的位置,"."代表当前路径;若不用“.”,则可以设置路径,如:javac -d d:\ hello.java)
将程序抽象为字节码
二、运行:
eg:java Hello
——启动调用虚拟机
三、Java包的编译
由于在实际的企业开发中,不会把类定义在默认包下,所以需要指定文件夹。(源文件和class文件不要一起放在包下)
即在第一个非注释行加入:package 文件名 ;
eg:
package Lee;
public class HelloLee
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
则生成的Hello.Lee.class文件在Lee文件夹下,代表着把这个源文件里的所有类都放在这个包中。
此时运行则需要用cmd运行,
使用时:应该采用包名+类名的组合
eg: var a = new Lee.HelloLee();
四、Java反汇编
//接口
public interface Eatable
{
int MAX_PRESERVE = 100;//保质期,且final修饰的必须有初始值
void test();//接口里的方法默认为抽象方法,默认有public abstract修饰
反汇编,可以看到默认的修饰。