初接触java,被一大堆概念搞迷糊了。什么java、java2、j2se、j2ee、j2me、javabeans、EJB……呀,都是些什么呀?糊涂哟!
先澄清个事情,自从jdk 1.2推出以后,sun公司就将java重新命名为java2,现在所提的java一般就是指java2。
之所以java显得如此神秘,是因为,java既是一种变成语言,也是一个平台(platform),或者说是架构。如果不了解java平台,就无法理解java。遗憾的是很少有人能深入浅出的讲解java 平台。
如果撇开java平台,仅仅作为一种编程语言,java在语法以及编程思想(指coding方面)上与传统语言没有多大本质区别。java具有纯面向对象、优化的内存管理模型等等好处,具体细节查书吧,我写也是copy&paste,没意思哦。
下边我就按照我的理解说说java 平台。
首先说,编译后的java程序并不是直接可以在某个特定操作系统上运行的二进制代码,而是一种所谓的字节码。要把安装了java vm的计算机看成一个虚拟机,字节码只能在这个虚拟机上运行。至于真正的硬件和操作系统是什么并不重要。什么?您没听说过虚拟机?那赶紧把《计算机原理》翻出来看看,我可讲不了这么高深的东东。其实不明白也无妨,只要知道无论在win、*nix抑或mac OS上要运行java语言编的程序必须安个叫java虚拟机的玩意就够了。
说到这里,有心人已经可以想见,既然java写的程序是运行在java虚拟机上,那么同一个编译后的java就可以在任何java虚拟机上运行,而不必关心java虚拟机下到底是什么操作系统什么硬件了。这也就是SUN一直吹嘘的“一次编写,处处运行”特性。好像很自然就引出来了,看到大学里基础课程的重要性了吧,哈哈!
了解了这一点以后就可以继续了。
Java体系结构的基础是j2se(java 2 platform,standard editions),顾名思义,标准版。j2se最底层是JRE(java 运行环境),JRE提供包括java api、java虚拟机和其他支持applet以及java应用程序运行的组件等。也就是说安装了JRE,就可以运行由java编写的各种程序了。有了JRE还不能开发java程序,想开发java程序还需要jdk(java 开发包),对应win中的sdk。Jdk自然中包括compiler和debuger等等工具。具体内容参考http://java.sun.com/j2se/overview.html吧,人家官方网站讲得蛮清楚。
J2ee(Java 2 Platform, Enterprise Edition),相对j2se,很明显j2ee就是为企业服务的。j2ee是j2se的一个超集,为企业运算提供了一个平台。这个在这个平台上使用java技术开发具有很多优点:易于开发、跨平台性、兼容其它应用比如数据库、CORBA、轻松实现中间件。实现的技术手段有EJB(Enterprise JavaBeans), Java Servlets API,JSP( JavaServer Pages) 和xml。
下面做些名词解释。
Java应用程序(java application):像普通的windows应用程序或者linux下elf应用程序一样,用java语言编写的“可执行程序”。打引号的意思是说它只能在java虚拟机上运行,而不能在低一级的虚拟机上运行。
Applet:所谓的“java小程序”,迷糊了吧?其实我第一次看得时候不明白是什么。Applet是一种特殊的程序,只且只能在支持applet的浏览器中运行,如果浏览器不支持,那她就只能哀叹自古红颜多薄命了。好在现在大部分浏览器都支持applet。
Servlet和jsp:
在解释jsp和servlet之前先讲讲cgi和服务器端脚本的区别。Cgi和服务器端脚本都实现动态网页的技术,cgi是个运行在服务器端的特殊的可执行程序,用c就可以写个cgi;而服务器端脚本是一种解释执行的脚本语言,不是可执行程序。她的运行需要www服务器支持,比如iis支持的asp、asp.net,apatch支持php都是。
Servlet就是在java平台上运行的cgi,是编译好的用java写好的特殊程序。而jsp就是那个需要www服务器支持的脚本语言。
Jdbc:java平台上连接数据库的东东,作用类似于odbc。
Ejb(Enterprise JavaBeans):我现在也不太明白到底是个什么东东。只知道是个具有高可重用性程序。主要作用是隐藏异构系统得区别。给上层的jsp和servlet提供独立的编程接口,jsp和servlet程序员不必关心ejb后边到底是什么样的系统。
我对java平台的理解:
java的核心在于跨平台。把复杂的系统细分成多层,每层屏蔽掉底层的异构特性,为高层提供统一的访问接口。这种模型可以参考网络的七层协议模型。
就单机而言,比如pentium上跑windows2000的机器、pentium上跑Linux的机器、rs60000上跑aix的机器都是不同的平台。Sun公司针对不同的操作系统开发了相应版本的java虚拟机,这样,同一个java应用程序不必重新编译就可以在安装了java虚拟机的任何平台上运行了。
对网络环境来说稍微复杂些。传统的三层模型不讲了,不懂的自己查资料。Java平台的模型有点不同。
网友评论