一、Java三大版本
- JavaSE:标准版(桌面程序、控制台开发…)
JavaME:嵌入式开发(手机,小家电…)- JavaEE:E企业级开发(web端,服务器开发…)
二、Java的特点
关键特点
- 面向对象
两个基本概念:类、对象
三大特性:封装、继承、多态 - 健壮性(鲁棒性)
吸收C/C++语言的特点,但去掉了指针、内存申请与释放等影响程序健壮性的部分,提供了一个相对安全的内存管理和访问机制 - 跨平台性
Write once,Run Anywhere
原理: 运行java程序的操作系统上,需要先安装一个Java虚拟机即JVM,由JVM负责Java程序在当前操作系统中运行
11个具体特点:
- 简单性:Java语法是C++语法的一个“纯净”版本,没有头文件、指针运算(指针语法)、结构、联合、操作符重载、虚基类等;支持开发能够在小型机器上独立运行的软件
- 面向对象:取代C++中的多重继承为更简单的接口;提供更丰富的运行时自省功能
- 分布式:Java有一个丰富的例程库,用于处理像HTTP和FTP之类的TCP/IP协议。Java应用程序能够通过URL打开和访问网络上的对象,其便捷程度就好像访问本地文件一样
- 健壮性:Java编译器能够检测许多在其他语言中仅在运行时才能检测出来的问题,如进行早期的问题检测、后期动态的(运行时)检测等;与C++最大的不同在于Java采用的指针模型可以消除重写内存和损坏数据的可能性
- 安全性:Java适用于网络/分布式环境,为了保证该环境达的安全性,从一开始,Java就设计成能够防范各种攻击,使用Java可以构建防病毒、防篡改的系统
- 体系结构中立:Java编译器能够生成与特定的计算机体系结构无关的字节码(体系结构中立的目标文件格式,.class),生成的字节码不仅可以很容易地在任何机器上解释执行,而且还可以动态地翻译成本地机器代码
- 可移植性:与C和C++不同,Java规范中没有“依赖具体实现”的地方。基本数据类型的大小以及有关运算都做了明确的说明。具体来说,在Java中,数据类型具有固定的大小(C/C++中,int位数不固定的,而Java中固定为32位),这消除了代码移植时令人头痛的主要问题;二进制数据以固定的格式进行存储和传输,消除了字节顺序的困扰;字符串是用标准的Unicode格式存储的。Java定义了可移植的接口
- 解释型:Java解释器可以在任何移植了解释器的机器上执行Java字节码
- 高性能:解释后的字节码性能已经比较满意,但在有些场合下还需要更加高效的性能->即时编译器?
- 多线程:多线程可以带来更好的交互响应和实时行为
- 动态性:Java够适应不断发展的环境,库中可以自由地添加新方法和实例变量,而对客户端却没有任何影响;在Java中找出运行时类型信息十分简单
三、Java运行机制
两个核心机制:
- Java虚拟机(Java Virtual Machine)
- JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域,负责执行指令,管理数据、内存、寄存器
- 针对不同的操作系统有不同的JVM
- 垃圾回收机制(Garbage Collection)
- C/C++语言中,程序员需要负责回收无用的内存
- Java语言提供了一种系统级线程跟踪存储空间的分配情况,能够在JVM空闲时,检查并释放那些可以被释放的存储空间
- 该机制在Java程序运行过程中自动进行,程序员无法精确控制和干预
问题: Java程序还会存在内存泄漏和内存溢出问题吗?
回答: 会
语言类型:
- 编译型语言:使用平台相关的编译器(编程语言提供)对源代码进行编译,并包装生成可以直接在平台上运行的可执行程序(可执行程序通过平台提供的解释器解释运行)->先编译成可执行程序再解释运行可执行程序
- 优点:一次编译,多次运行,执行效率高
- 缺点:可移植性差,跨平台需要修改源代码。
- 解释型语言:使用平台相关的编译器(编程语言提供)和解释器(编程语言提供)对源代码进行逐行编译和解释(注:执行哪行代码,就编译和解释哪行代码,不执行的代码不编译和解释)->边编译边解释(这样可以按平台特性得到想要的程序)
- 优点:可移植性好,跨平台无需修改源代码
- 缺点:每次运行都要重新编译,执行效率低。
Java既是编译型也是解释性语言(采取折中方案)
四、JDK、JRE
- JDK(Java Development Kit):Java开发工具包,如编辑工具(javac.exe)、打包工具(jar.exe)等;供开发人员人员使用;包括JRE
- JRE(Java Runtime Environment):Java运行环境,如java程序所需的核心类库等,安装后即可运行开发好的Java程序;包括JVM
JDK=JRE+开发工具集
JRE=JVM+Java SE标准类库
五、Java开发环境搭建
卸载JDK
- 删除JAVA安装目录
- 删除系统设置里的环境变量【JAVA_HOME和Path】
- 删除环境变量指示路径下关于Java的目录
- 测试: java -version
安装JDK
- 官网下载系统对应版本的JDK8并安装【企业最多使用的】
- 配置系统环境变量JAVA_HOME:指定JDK的安装路径
- 在系统变量的Path下添加JDK的bin和JRE的bin
- %JAVA_HOME%\bin
- %JAVA_HOME%\jre\bin
- 测试:java -version
六、Hello,World!
public class hello{
public static void main(String [] args){
System.out.print("Hello,world!");
}
}
- javac 命令编译成class文件(字节码文件)
- java 命令运行编译后的文件
注:
- java大小写敏感
- 文件名和类名【public class 类名】要相同,并且首字母大写【一般】