杂谈Java的成功

来源:互联网 发布:金融网络销售干什么的 编辑:程序博客网 时间:2024/04/27 16:09

最近很烦躁很久以前就想总结一些东西但是还是拖延到现在来完成原因有很多与其谈原因倒不如说我很懒惰.  但当空闲下来要写时却不知从那个突破口开始如此只好瞎谈了目的只有一个分享自己的了解与和我一样漂泊在异乡的同胞们探讨技术和生活偶尔也可以聊聊人生.  就此打住扯远了

谈到Java, 大多数人想到的肯定是编程语言的确, java是一种面向对象的高级语言,它提供面向企业级的应用程序的解决方案所以10年来它盖过了C,C++而一跃成为最火爆的编程语言编程语言最新排名Top1.

Java平台有两个版本, Java SE(标准版), EE(企业版)。 SE提供了基于Java编程的核心包含JDKJRE(他们两者的关系就不描述了)JRE, java runtime environment, 运行时环境,提供运行java程序的必要环境包含JVM,核心类库,API, 工具库,其他集成环境类库以及用户接口工具包, JDK除包含JRE还包含其他的开发工具和高级API, 例如编译器,RMI,jar, JPDA.  EE 提供了基于web编程的很多java组件用来为简化企业级应用程序开发的解决方案: JSP ,Servlet, Portlet, JDBC, EJB. Java成功的原因 

为什么是java, 这个问题已经很透明了上面提到的这些可重用组件是Java的成功的一部分它结合目前很多知名的OpenSource 软件使企业的开发已变得非常敏捷


 其次, Java的平台无关性也是很大一部分原因,  "Once written, Running anywhere",  编译一次到处运行不依赖任何平台的Java应用程序这个决策为java的发展扫平了依赖操作系统的障碍聊到这里先给个结论. "Java是半编译半解释的语言" .  当我们写完Java源文件.java文件后, 

1. 在java编译环境中, java 编译器会将.java文件编译成.class的字节码中间文件. 编译完成的class文件可以通过本地或者网络在jvm中执行. 

2. 在JRE中, Class Loader决定了类的加载顺序. 在加载一个类时, classloader会verify这个类是否遵循java语言规范,这当中会导入java的基础类库进行process. 

3. 校验失败, 抛出runtime exception。 

4. 校验成功后, 接下来会传递到JVM中的Java解释器, java解释器的目的是将该class文件translate为目标平台处理器能设别的机器码。


这种编译方式是java跨平台运行, 平台无关性的原因。 还有一种Just in time compile 即时编译. 和C++一样, 将java 源代码编译成和本地平台一致的机器码. 不需要通过jvm解释器的翻译就能直接运行的机器码.

第三, java是面向对象的高级语言, 吸收了C, C++的很多高级特性, 又fix了很多在c++上让编程人员很头痛的问题(e.g. 内存管理, Java中用LocalThread实现的GC可以管理不再被使用和没有引用的对象,执行垃圾回收.释放资源,内存). 具有浅显易懂的语法, 符合面向对象的三大特征(封装, 继承, 多态)[也有人认为Java不是纯面向对象的语言, 在周爱民同志的《大道至简》这本书里面有描述, 不过多阐述]. 使用起来极其方便. 

第四, Java有一个很庞大的社区组织, 也驱动了JSR对标准化技术的定义和修订. 使更多现实的原理和理念一直在注入,不断的更新.

最后一个, 也是Java做得很好的很重要的一个因素, Java API, Java有非常丰富的api, 个人觉得最重要的还是对集合的支持[以后将会单独用一篇文章来叙述集合]