JAVA的前世今生

Java起源于一个名为Green的项目,这个项目是为开发嵌入式家用电器的分布式系统,但由于C++过于复杂且安全性差,项目团队最后决定基于C++语言开发一种新的Oka语言(又称橡树语言,是Java的前身,于1991年出现)。
时至今日,Java有三个主要发展方向:
1.J2ME:主要用于在移动设备和嵌入式设备(手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。
2.J2SE:主要用于开发部署在桌面服务器、嵌入式环境和实时环境中使用的Java应用程序。2004年9月30日18:00发布J2SE1.5且更名为JavaSE5.0。
3.J2EE:Java技术包含最广泛的部分,提供了企业应用开发相关的完整解决方案,不但包括J2SE中的所有类,并且含有开发企业级应用的类库,是Java发展的主要方向。
虽然Java有三个发展方向,但最核心,最基础的部分是J2SE,其他两个方向都是在J2SE的基础上发展起来的。

Java能干点什么呢??

Java不仅是一门语言,更是一个平台,sun公司为Java打造的口号是write once,run anywhere(一次编写,到处运行),Java的伟大之处不在于它是一门语法优美,设计先进的语言,而在于它为我们提供了一种跨平台可移植的设计理念。
Java语言的七大特点:
1)简单性:
Java在语法上继承了C++的风格,但剔除了C++中许多容易混淆的,难于理解的的特性。在Java中,略去了头文件,指针运算,操作符重载,多重继承等概念,并且通过自动垃圾回收机制大大简化了程序员的内存管理工作。
2)面向对象
Java全面彻底的应用了面向对象的设计思路,但在完全彻底支持面向对象特性的同时,又保持了简单类型非“纯面向对象”,兼顾了程序的运行效率。
3)分布式
Java在一开始就是被设计用于实现分布式系统的。在网络应用方面可以说Java是面向网络的语言,通过其他类库可以方便的处理各种网络协议,可以方便的进行传统的套接字网络开发。
4)健壮性
Java是严格的强类型语言,在编译和运行时都会对程序可能出现的问题进行检查,并报错,Java不但提供了垃圾回收机制来自动管理内存,避免了程序员的很多无心错误和恶意攻击,还提供 了非常好的故障追踪和处理机制,保障了程序运行的健壮性。
5)可移植性
Java体系中立,跨平台,在编译过程中,将*.java文件编译成*.class二进制文件,再通过不同操作系统上的不同的JVM(Java虚拟机)将*.class文件 的字节码翻译给不同的操作系统,由此做到一次编写,到处运行。
6)安全性
Java通常被用在网络环境中,因此,Java提供了一个安全机制以防恶意代码的攻击和善意程序的bug破环,除此之外,Java虚拟机(JVM)也提供了安全防范机制:jvm为类装载器分配不同的名字和空间以防代替本地的同名类,还提供了字节码检查和安全管理机制。
7)多线程
多线程处理能力使得程序有更好的交互性,实时性。在许多编程语言中,多线程往往非常复杂,但是Java实现多线程非常简单,程序员在编写代码时不需要考虑后台的复杂实现。

Java运行机制

Java是半编译半解释型语言,Java运行程序必须经过编写、编译、运行三个步骤
①编写是指用IDE工具或者文本编辑器写源代码,最终保存为后缀名为.java的Java源文件
②编译分为静态编译和动态编译。JDK7.0后Java语言支持动态编译,是指Java编译器对Java源代码进行错误检查,如有错误,反馈给程序员,若没有错误,则编译通过,生成后缀名为.class的字节码文件。
③运行是Java解释器将后缀名为.class的字节码文件翻译成特定平台可识别,能执行的机器码,执行并返回执行结果。

JVM的原理及作用:

jvm是Java virtual machine,即Java虚拟机。JVM是可运行Java字节码的虚拟计算机,是一个模拟出来的计算机,他能在真是的计算机上模拟各种计算机功能,只是结构,功能和性能相对简单一些。麻雀虽小,五脏俱全,JVM有自身完善的架构,例如处理器,堆栈和寄存器等,还具有相应的指令系统。
Java虚拟机包含一个类装载器,它可以从程序和API中装载class文件。Java API中只有程序执行时需要的那些类才会被装载。字节码由执行引擎来执行。所有平台上的JVM向编译器提供相同的编程接口,而编译器只需面向虚拟机,生成虚拟机所能理解识别的代码,然后由虚拟机解释执行,不同 的JVM有不同的执行引擎,最简单但速度最慢的是“一次性解释字节码”,速度较快的但比较耗内存的是“即时编译器”,最好但最难实现的是“自适应优化器”。
”即时编译器(just-in-time compiler)”:在这种情况下,第一次被执行的字节码会被编译成本地机器代码。编译出的本地机器代码会被缓存,当方法以后被调用的时候可以重用。

“自适应优化器”:在这种方法里,虚拟机开始的时候解释字节码,但是会监视运行中程序的活动,并且记录下使用最频繁的代码段。程序运行的时候,虚拟机只把那些活动最频繁的代码编译成本地代码,其他的代码由于使用得不是很频繁,继续保留为字节码,由虚拟机继续解释它们。
一个自适应的优化器可以使得Java虚拟机在80%–90%的时间里执行被优化过的本地代码,而只需要编译10%–20%的对性能有影响的代码。

总结:JVM是是运行字节码的虚拟机,针对不同的系统有不同的实现,其目的是针对相同的字节码文件能得到相同的结果,这样就能达到一次编译到处运行的目的;JVM对字节码文件的解释是通过逐行解释执行的,因此效率很低。

JDK软件内各文件名称含义:
src.zip:Java所有基码类源代码
jre:运行时环境
lib:Java运行时需要用到的扩展类或第三方扩展类
bin:Java命令
include:需要导入的文件
JDK JRE JVM之间的关系:
JDK JRE JVM之间是一种包含的关系,范围从大到小依次是:JDK >JRE >JVM.
JDK安装目录下存在两个JRE作用各有不同:
例如一个jre是安装在JDK路径:D:\Java\jdk1.7.0_05\jre,这个jre是jdk自带的为其开发工具提供运行环境提供的jre
另一个jre安装路径D:\Java\jre7,这个jre用于为Java程序提供运行环境,但是jdk自带工具只能使用第一个目录下的jre.

Java和C++的区别
1.都是面向对象语言,支持继承、封装、多态
2.Java不提供指针访问内存,程序内存更加安全
3.Java只允许单继承 但是对于接口可以多实现。C++可以多继承
4.Java有自动内存管理机制,对于无用内存不用手动清除。

你可能感兴趣的:(JAVA)