Java学习(二)--java概述

一 发展

       看了java的发展史,发现他的发展充满了戏剧性。它没有经过精心的策划、制作,但是它的产生却具有了划时代的意义,一切的形成都好像顺利成章,又充满了传奇。

     1990年,sun公司准备为下一代只能家电编写通用控制系统。因为C++的api存在的问题,创造了一种新的语言oak。

       1992年,在其竞争机顶盒平台倡议中,因其过分给用户控制权而落选。否极泰来,在这里得到了最好的验证,再坚持一点点。下一个一点点就是转机。

       1994年,互联网和浏览器的出现给oak带了希望。进过调整后,着眼于浏览器方法。更名为java。

       1995年初,sun公司将java语言发布到网上,免费为大家使用,包括源码。几个月后它成立最热门的语言。sun公司的大公无私成就了java,免费的共享,让它以最快的速度蔓延。开源共享的思想在此时大放光彩。

       此时的java也仅仅是一种语言,想要开发负责的程序,必须要有一个强大的开发类库,JDK应用而生。

       1996年初,发布了JDK1.0。包括运行环境(JRE)和开发环境(JDK)。

                运行环境包括:核心API,继承API,用户界面API,发布技术,java虚拟机(jvm)

                开发环境包括:编译器

       1997,JDK1.1新增了JIT(即时编译)编译器,摒弃了传统的编译方式(编译一条,运行,完成后丢弃),将经常用到的指令保存在内存中,下次调用无需重新编译,这让jdk在效率上有了较大提高。

       flash的出现蚕食了java语言在网页上的应用。java语言虽然为互联网上广泛使用的语言,但是它一直没有找准自己的定位。知道1998年,sun发布了历史上最JDK1.2版本。伴随着1.2发布的还有JSP/Servlet、EJB等规范,并将java分成了J2EE J2SE J2ME 三个版本。

       看了java的发展史,充满了坎坷与希望。它经历了低谷,走过了“小荷才露尖角角”,也正在验证着它的辉煌。它的每次挫折,都带来了绝地反击。华丽的转身,java之美。

二 java与C#简单比较

              微软推出.net平台,发布C#语言,都是为对抗java而出现。自C#诞生日起,关于 C#与java之间的论战便此起彼伏。从技术的角度,C#与java都是对传统面向对象程序设计的组件化时代的革新成果,可谓殊途同归。
       相对于java,C#也有其独特的优势:microsoft提供的Visual Studio 开发平台可以很好的提高C#程序的开发效率,而且Microsoft要比java善于利用windows平台,当使用C#创建windows服务、记录windows事件日志、访问windows注册表时,.net却是更方便。
       java的设计宗旨独立于任何平台,自然不会提供太多的windows特性。这也正是他的优势:跨平台。C#语言,只能局限于windows平台上。因此对于一个开放式的企业应用而言,通常会选择java作为开发语言,而不是C#。
        看过一篇博客上面这样比喻java与C#的关系。java就像一个专业相机,拍摄出来的照片的好坏取决于摄影技术。而C#就像是傻瓜相机,C#继承了windows的特点:傻瓜化,便于操作,便于上手。

三 运行机制

java语言是一种特殊的高级语言,它既具有解释型语言的特性,也具有编译型语言的特性,java先编译后解释。java语言编译后不会生成特定平台的机器码,而是生成一种与平台无关的字节码。它不是可执行文件,它必须使用java解释器来解释执行。


         java语言里负责解释执行字节码文件的是java虚拟机,所有平台上的jvm想编译器提供相同的编程接口,而编译器只需要面向虚拟机,生成虚拟机能理解的代码,然后由虚拟机来解释执行。所有平台上的JVM向上提供给java字节码程序的接口完全相同,但向下适应不同平台的接口则不相同。

四 垃圾回收机制

       传统的C/C++等编程语言,需要程序员负责回收已经分配的内存。显式进行垃圾回收是一件比较困难的事情,因为程序员不总是知道应该合适释放,如果一些分配的内存得不到及时回收,就会引起系统运行速度的下降,甚至导致程序瘫痪,这种现象较内存泄露。显式垃圾回收有如下缺点:1 回收不及时,导致内存泄露,降低系统性能。2 错误回收。
       java语言不需要程序员直接控制内存回收,java程序的内存分配和回收都是由JRE在后台自动进行的。JRE回收不在使用的内存,这种机制称为“垃圾回收”。通常JRE提供一个后台线程来进行检测和控制,一般都是CPU空闲或内存不足时自动进行垃圾回收。 
       传统的垃圾回收和java的垃圾回收,就像人工与机械的对比。垃圾回收能自动释放内存空间,减轻编程的负担,可以很好的提高编程效率,保护程序的完整性。但是它也同样存在缺点。它的开销影响程序性能。java虚拟机必须跟踪程序中有用的对象,才能确定无用对象,并进行释放。这个过程需要花费处理器的时间。其次是垃圾回收算法的不完备性。早前采用的垃圾回收算法,不能保证100%的收集到所有的废弃内存。

五  总结

       做完了ITOO2.0(java项目)之后,再回头看看java的发展史,看看它的垃圾回收机制等,突然感觉关系近了。


你可能感兴趣的:(Java学习(二)--java概述)