频道直达:新闻 - 组网 - 安全 - 服务器 - 存储 - 系统 - 应用 - 开发 - 数据库 - 前沿 - 技术人 - 培训 - 求职 - 读书 - 教程 - 专题 - 产品 - 案例 - 技术圈 - 博客 - BBS
51CTO.COM_中国领先的IT技术网站
找资料:

新手学堂:漫谈EJB在Java中的应用(一)

作者: 小白 出处:赛迪网 2008-03-17 11:04    砖    好    评论   进入论坛
阅读提示:Java语言是一种多用途的语言、并发的语言、以类为基础,面向对象的语言。它的设计尽可能的做到和操作系统是无关的,也就是Java所宣传的那句话:“一次编写,到处运行。”

Java语言

Java语言最早被称为Oak,它是为了实现嵌入式的消费类电子产品应用而产生的,它的作者是James Gosling.Ed Frank, Patrick Naughton, Jonathan Payne, Chris Warth在随后的几年时间中为Java语言加入了大量的特性,并把Java语言的目标做了一个重新的定位,定位于适合Internet的语言。

Java语言是一种多用途的语言、并发的语言、以类为基础,面向对象的语言。它的设计尽可能的做到和操作系统是无关的,也就是Java所宣传的那句话:“一次编写,到处运行。”Java的设计参考了C和C++语言,因此熟悉C和C++的程序员对Java语言上手很快,而Java设计的原则是能够利用Java语言快捷的编写应用,所以我们可以发现,在Java语言中,并没有那些C和C++中的复杂的机制。最明显的就是C中被大量使用的指针,由于它的随意性,被Java以引用来代替了。而C++中的操作符重载、模板、泛型的特性也因为使用比较复杂,Java也不予采用。但是目前Java仍然不断的推出新的特性,以满足应用的发展。例如在新推出的JDK1.4中,Java语言就能够支持Assertment机制和Perl语言中最有用的正则表达式机制。

Java语言主要由以下五种元素组成:标识符、关键字、文字、运算符和分隔符。这五种元素有着不同的语法含义和组成规则,它们互相配合,共同完成Java语言的语意表达。

1、标识符。变量,类和方法都需要一定的名称,我们将这种名称叫做标识符。

2、关键字。关键字是Java语言本身使用的标识符,它有其特定的语法含义。所有的Java关键字将不能被用作标识符。

3、数据类型。Java有着不同的数据类型。比较值得一提的是字符串数据类型,字符串数据类型是用一对双引号括起来的字符序列,字符串数据实际上是由String类所实现,而不是C语言中所用的字符数组。每一个字符串数据将产生一个String类的新的实例,用户不必对字符串与类这个概念发生关系而感到担心,由于类的特性,你不必担心如何去实现它们,它们会自己照顾好自己,需要说明的是字符串在Java里作为类只是出于安全的考虑。

4、运算符。任何语言都有自己的运算符,Java语言也不例外,如+、-、*、/等都是运算符,运算符的作用是与一定的运算数据组成表达式来完成相应的运算。对不同的数据类型,有着不同的运算符。

5、分隔符。分隔符用来使编译器确认代码在何处分隔。‘’‘’‘;’‘:’都是Java语言的分隔符。

学习 Java 语言很简单,毕竟 Java 语言也只包含五十多个关键词(keyword)与几十个算符(operator),再加上 Java 语法(syntax)也很简单,所以一般人可以很快就学会 Java 语言。

危险的是,很多人认为已经完全掌控 Java 语言,但其实对于内部的运作机制仍不能掌握,这些盲点有时候会让你无法完全掌控 Java 语言。

克服这些盲点的方式是看「The Java Language Specification, 2nd Ed.」(没有中文版)来彻底弄懂 Java 程序语言,并看「Inside the Java Virtual Machine, 2nd Ed.」来彻底掌握 Java 虚拟机器的运作方式。

学会了语言,并不代表就可以设计出好的对象导向系统架构。想要成为对象导向的专家,往往需要:

(1)多看相关的书,特别是 Design Pattern 和 Refactoring 的书。


(2)多观摩别人的程序(例如 Java API 的 design 与 implementation)


(3)多写程序。

学会 Java 语言之后,还需要学会一些 API 才能写出有用的程序。

Java 的 API 非常多,必须规划好一个学习路径,才不会在浩瀚的 API 大海中迷失。必备的 API 包括了:IO、New IO、Collection Framework、Network、RMI、JAXP…… 等。

至于其它的 API,就看你的需求而定,大致上分成:

◆GUI 类:JavaBean -> Swing -> JavaHelp -> Java2D -> Image IO -> JAI -> Java 3D ……

◆ Enterprise 类:JDBC -> JDO -> Servlet -> JSP -> EJB -> JMS -> JTA/JTS……

◆J2ME 类(这一类不是我的专长,无法提供学习顺序建议)

Java语言通常都是根据Java虚拟机规范(The Java Virtual Machine Specification)中的定义,编译为字节码指令集和二进制格式。因此我们接下来就讨论Java虚拟机(JVM)

JVM

我们已经谈过Java语言的语法类似于C和C++,但是摒弃了C和C++中复杂、疑惑和不安全的特性。Java语言最早是用来构建消费类网络设备的软件的,因此它要支持多主机的架构,并要求能够提供安全的软件组件。为了满足这些需求,编译好的代码就必须能够通过网络来传播,能够在任何客户端上运行,同时还要保证客户端是足够安全的。

Java虚拟机是Java和Java 2 平台的基石。它能够保证Java语言和硬件、操作系统无关,保证编译后的代码最小,并保护用户不受恶意程序的攻击。Java虚拟机到底是什么呢。其实它就是一台不实际存在的计算机。和真实的计算机类似,它也有自己的指令集,并可以在运行环境中分配内存区域。使用虚拟机机制来实现编程语言并不是Java的创举,这已经是非常普遍的做法了,最著名的许你就莫过于UCSD Pascal的P-Code机。

只要浏览器检测到目前所处理的Web文件内容含有一个Java Applet,浏览器将会为这个Java小程序另外开一个JVM,执行这个Java应用小程序。在JVM中执行的Java小程序可以得到充分安全的保护。如同我们上面所说,JVM是一个自给自足的作业环境,就像是一台独立的计算机一样。例如,在JVM运作的Applet,无法存取主机操作系统。优点是:

1、系统中立。Java应用程序可以在任何JVM中运作,不论该系统使用何种硬件、软件。

2、安全。正因JVM跟操作系统没有任何接触,Java程序很难损害到其它档案或应用程序。

缺点是,由于在JVM运作的程序独立在操作系统之外,也就无法享受操作系统各项特殊功能。

Java技术之所以在今天得到了如此广阔的应用,其中它的安全性是不能不提的。不同于其它技术(例如Microsoft的ActiveX)中安全性作为附加设计和补丁,Java从设计之初便考虑到了安全性。因此Java的安全性是在语言层次实现的。Java的安全性由下列三个方面保证:

1、语言特性(包括数组的边界检查、类型转换、取消指针型变量)。

2、资源访问控制(包括本地文件系统访问、Socket连接访问)。

3、代码数字签名(通过数字签名来确认代码源以及代码是否完整)。

Java的源代码是先编译成为一种字节码的中间代码,存放这种代码的文件就是class的文件。真正执行的时候是将class文件装载到JVM(虚拟机)中,然后由JVM解释执行的。所以数组的上下界检查及合法的类型转换是通过JVM得到保证的。Java通过一个类装载器类(ClassLoader)将虚拟机代码文件(即class文件)装载到JVM中,当完成装载后,一个被称做安全管理器(SecurityManager)的类开始运行,例如当一个Applet的class文件被缺省的类装载器装载到JVM中后,JVM会立即为它装载一个SecurityManager的子类AppletSecurity,由这个管理器来验证操作。代码的所有动作(例如文件读写)都要先经过验证,只有被该安全管理器接受的动作才能完成,否则就会抛出SecurityException异常。

对于JDK1.0,权限被笼统的划分为两大块。一是拥有所有的权限,一个是仅拥有"沙箱"(sandBox)权限,这也是普通的Applet所拥有的权限。这时本地文件读写或是与源主机(Orignal Server)以外的主机连接都是被禁止的。这种划分的最大问题就是缺乏灵活性。例如我们希望一个Applet在用户信任的情况下能够对本地文件系统的某个目录进行读写,但并不要通过Socket与其它主机连接。这是JDK1.0的权限划分就不能达到要求。JDK1.1后改进了权限的划分,引入了权限集(PermissionSet)的概念。

由于我们的文章并不是讨论JVM,因此,我们只是对JVM做一个简单的介绍。如果需要详细了解的,可以参考「The JavaTM TMVirtual Machine Specification」。

【相关文章】

【责任编辑:碧海蓝天 TEL:(010)68476606】

专题
Java实用开发全集
Java类的基础教程专题
Java发展动态专题
Java编程开发手册
EJB应用开发专栏
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 领 先 的 IT 技 术 网 站 ·
技 术 成 就 梦 想
·Java基础教程 (查看82598次)
·UML类图详解 (查看73773次)
·C++是垃圾语言?! (查看44366次)
·C#技术开发指南 (查看41415次)
·UML统一建模语言 (查看39823次)
·Java编程开发手册 (1198个砖)
·Java基础教程 (432个砖)
·C#技术开发指南 (311个砖)
·.NET开发手册 (254个砖)
·PB开发教程 (223个砖)
·Java编程开发手册 (658个好)
·Java基础教程 (580个好)
·.NET开发手册 (283个好)
·PB开发教程 (213个好)
·Delphi开发技术手册 (203个好)
订阅技术快讯
电子杂志下载
名称:SQL Server数据库管理精品黄皮书
简介:书中文章经过精挑细选,便于用户能根据自己的实际工作和学习,快速在本书寻找到相关资料。内容涵盖了SQL Server的安装与升级、语句查询、数据备份和恢复、自动化任务、数据同步、数据字典、安全和预防、性能和优化、集群等各方面应用信息,以及DBA管理人员在数据库管理工作中
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。
面试官:我该怎样“战胜”你
面试官:我该怎样..
CCNA认证考试Pass必备
CCNA认证考试Pass..
无线重中之重:安全问题
无线重中之重:安..
· 无线重中之重:安全问题
· 无线网络环境
· Windows Server 2008专..
· 无线局域网基本知识
· ARP攻击防范与解决方案
· 2008年上半年全国软考..
· 家庭无线局域网
· 龙芯要做中国的“奔腾”
· 2008年上半年IT新闻热..
· 2008年上半年IT技术图..
· IT工程师该不该考CCIE..
· 路由器设置与口令恢复
· 网络工程师职业规划与..
· 浏览器的战国时代
· 云计算时代来临
· 微软出价446亿美元收购..
ARP攻击防范与解决方案
ARP攻击防范与解..
SQL Server 2008/2005全解
SQL Server 2008/..
SOA 面向服务架构
SOA 面向服务架构
· SOA 面向服务架构
· SQL Server 2008/2005..
· Apache技术专题
· 三层交换技术专题
· SQL Server入门到精通
· 无线网状网(MESH)
· Windows远程桌面应用
· C#技术开发指南
· Apache技术专题
· Windows集群服务应用
· C#技术开发指南
· 文档格式标准开战 OOXM..
· 路由器设置与口令恢复
· Linux 集群技术专题
· PHP开发应用手册
· SOA 面向服务架构
ARP攻击防范与解决方案
ARP攻击防范与解..
SQL Server 2008/2005全解
SQL Server 2008/..
SQL Server入门到精通
SQL Server入门到..
· SQL Server入门到精通
· SQL Server 2008/2005..
· SOA 面向服务架构
· Apache技术专题
· C#技术开发指南
· 三层交换技术专题
· Apache技术专题
· C#技术开发指南
· Windows远程桌面应用
· 企业数据恢复指南
· Windows集群服务应用
· 路由器设置与口令恢复
· Linux 集群技术专题
· SOA 面向服务架构
· 了解统一威胁管理(UTM)..
· 解析35岁技术人的价值..