Java的前世此生

简介php

    Java是一种能够撰写跨平台应用程序的面向对象的程序设计语言。Java 技术具备卓越的通用性、高效性、平台移植性和安全性,普遍应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。html

 

语言特征
    Java编程语言的风格十分接近C语言、C++语言。Java是一个纯粹的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C语言中容易引发错误的指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增长了垃圾回收器功能用于回收再也不被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担心。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
    Java不一样于通常的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),而后依赖各类不一样平台上的虚拟机来解释执行字节码。从而实现了“一次编译、处处执行”的跨平台特性。不过,每次的执行编译后的字节码须要消耗必定的时间,这同时也在必定程度上下降了 Java 程序的性能。
编辑Java源代码可使用任何无格式的纯文本编辑器,在Windows操做系统上可使用微软记事本(Notepad)、EditPlus等程序,在Linux平台上可以使用vi工具等。
在记事本中输入以下代码:
前端

public class HelloWorld {
    //Java程序的入口方法,程序将从这里开始执行
    public static void main(String[] args){
        //向控制台打印一条语句
        System.out.println("HelloWorld!");
    }
}

编辑上面的Java文件时,注意程序中粗体字标识的单词,Java程序严格区分大小写。将上面文本保存为 HelloWorld.java,该文件就是Java程序的源程序。编写好Java程序的源代码后,接下来应该编译该Java源文件来生成字节码了。java

主要特性
    Java语言是易学的。Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。另外一方面,Java丢弃了C++中不多使用的、很难理解的、使人迷惑的那些特性,如操做符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,而是引用。并提供了自动的废料收集,使得程序员没必要为内存管理而担心。
    Java语言是强制面向对象的。
    Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C++语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。
    Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
    Java语言是健壮的。Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。
    Java语言是安全的。Java一般被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具备的许多安全特性之外,Java对经过网络下载的类具备一个安全防范机制(类ClassLoader),如分配不一样的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。
    Java语言是体系结构中立的。Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),而后能够在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。
    Java语言是可移植的。这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统自己也具备很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。[9] 
    Java语言是解释型的。如前所述,Java程序在Java平台上被编译为字节码格式,而后能够在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程当中须要的类在联接阶段被载入到运行环境中。
    Java是性能略高的。与那些解释型的高级脚本语言相比,Java的性能仍是较优的。
    Java语言是原生支持多线程的。在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来建立。一般有两种方法来建立线程:其一,使用型构为Thread(Runnable)的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类建立的对象即为线程。值得注意的是Thread类已经实现了Runnable接口,所以,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。
    Java语言是动态的。Java语言的设计目标之一是适应于动态变化的环境。Java程序须要的类可以动态地被载入到运行环境,也能够经过网络来载入所须要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。
Java语言的优良特性使得Java应用具备无比的健壮性和可靠性,这也减小了应用系统的维护费用。Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并下降成本。Java的编译一次,处处可运行的特性使得它可以提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。特别是Java企业应用编程接口(Java Enterprise APIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。
python

差别
    熟悉C语言和C++语言的读者必定想搞清楚这个问题,实际上,Java确实是从C语言和C++语言继承了许多成份,甚至能够将Java当作是类C语言发展和衍生的产物。好比Java语言的变量声明,操做符形式,参数传递,流程控制等方面和C语言、C++语言彻底相同。尽管如此,Java和C语言,C++语言又有许多差异,主要表以下几个方面:
Java中对内存的分配是动态的,它采用面向对象的机制,采用运算符new为每一个对象分配内存空间,并且,实际内存还会随程序运行状况而改变。程序运行中 Java系统自动对内存进行扫描,对长期不用的空间做为”垃圾”进行收集,使得系统资源获得更充分地利用.按照这种机制,程序员没必要关注内存管理问题,这使Java程序的编写变得简单明了,而且避免了因为内存管理方面的差错而致使系统出问题。而C语言经过malloc()和free()这两个库函数来分别实现分配内存和释放内存空间的,C++语言中则经过运算符new和delete来分配和释放内存。在C和C++这种机制中,程序员必须很是仔细地处理内存的使用问题。一方面,若是对己释放的内存再做释放或者对不曾分配的内存做释放,都会形成死机;而另外一方面,若是对长期不用的或再也不使用的内存不释放,则会浪费系统资源,甚至所以形成资源枯竭。
程序员

 

Java不在全部类以外定义全局变量,而是在某个类中定义一种public静态的变量来完成全局变量的功能。web

Java不用goto语句,而是用try-catch-finally异常处理语句来代替goto语句处理出错的功能。
Java不支持头文件,而C语言和C++语言中都用头文件来声明类的原型、全局变量、库函数等,这种采用头文件的结构使得系统的运行维护至关繁杂。
Java不支持宏定义。Java只能使用关键字final来定义常量。
Java对每种数据类型都分配固定长度。好比,在Java中,int类型老是32位的,而在C语言和C++语言中,对于不一样的平台,同一个数据类型分配不一样的字节数,一样是int类型,在PC机中为二字节即16位,而在VAX-11中,则为32位。这使得C语言形成不可移植性,而Java则具备跨平台性(平台无关性)。
类型转换不一样。在C语言和C++语言中,可经过指针进行任意的类型转换,经常带来不安全性,而在Java中,运行时系统对对象的处理要进行类型相容性检查,以防止不安全的转换。
结构和联合的处理。Java中根本就不容许相似C语言的结构体(struct)和联合体(union)包含结构和联合,全部的内容都封装在类里面。
Java再也不使用指针。指针是C语言和C++语言中最灵活,也最容易产生错误的数据类型。由指针所进行的内存地址操做常会形成不可预知的错误,同时经过指针对某个内存地址进行显式类型转换后,能够访问一个C++中的私有成员,从而破坏安全性。而Java用“引用”的方式,对指针进行彻底地控制,程序员不能直接进行任何指针操做。
避免平台依赖。Java语言编写的类库能够在其它平台的Java应用程序中使用,而不像C++语言必须运行于单一平台。
在B/S开发方面,Java要远远优于C++。
正则表达式

 

 


优劣势
    优点:Java适合团队开发,软件工程能够相对作到规范。因为Java语言自己的极其严格语法的特色,Java语言没法写出结构混乱的程序。这将强迫程序员的代码软件结构的规范性。这是一个很难比拟的优点。
    劣势:J2EE的架构很完美,初版软件能够作满意,可是很不适合互联网模式的持续不断修改。互联网软件工程管理上的不足,持续的修修补补致使架构的破坏。
数据库

 

主要服务
    JDBC(Java Database Connectivity)提供链接各类关系数据库的统一接口,做为数据源,能够为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,据此能够构建更高级的工具和接口,使数据库开发人员可以用纯Java API 编写数据库应用程序,同时,JDBC也是个商标名。
    EJB(Enterprise JavaBeans)使得开发者方便地建立、部署和管理跨平台的基于组件的企业应用。
    Java RMI(Java Remote Method Invocation)用来开发分布式Java应用程序。一个Java对象的方法能被远程Java虚拟机调用。这样,远程方法激活能够发生在对等的两端,也能够发生在客户端和服务器之间,只要双方的应用程序都是用Java写的。
    Java IDL(Java Interface Definition Language) 提供与CORBA(Common Object Request Broker Architecture)的无缝的互操做性。这使得Java能集成异构的商务信息资源。
    JNDI(Java Naming and Directory Interface)提供从Java平台到的统一的无缝的链接。这个接口屏蔽了企业网络所使用的各类命名和目录服务。
    JMAPI(Java Management API)为异构网络上系统、网络和服务管理的开发提供一整套丰富的对象和方法。
    JMS(Java Message Service)提供企业消息服务,如可靠的消息队列、发布和订阅通讯、以及有关推拉(Push/Pull)技术的各个方面。
    JTS(Java transaction Service)提供存取事务处理资源的开放标准,这些事务处理资源包括事务处理应用程序、事务处理管理及监控。
    JMF(Java Media Framework API),她能够帮助开发者把音频、视频和其余一些基于时间的媒体放到Java应用程序或applet小程序中去,为多媒体开发者提供了捕捉、回放、编解码等工具,是一个弹性的、跨平台的多媒体解决方案。
    Annotation(Java Annotation),在已经发布的JDK1.5(tiger)中增长新的特点叫Annotation。Annotation提供一种机制,将程序的元素如:类,方法,属性,参数,本地变量,包和元数据联系起来。这样编译器能够将元数据存储在Class文件中。这样虚拟机和其它对象能够根据这些元数据来决定如何使用这些程序元素或改变它们的行为。
    在Java技术中,值得关注的还有JavaBeans,它是一个开放的标准的组件体系结构,它独立于平台,但使用Java语言。一个JavaBean是一个知足JavaBeans规范的Java类,一般定义了一个现实世界的事物或概念。一个JavaBean的主要特征包括属性、方法和事件。一般,在一个支持JavaBeans规范的开发环境(如Sun Java Studio 和IBM VisualAge for Java)中,能够可视地操做JavaBean,也可使用JavaBean构造出新的JavaBean。JavaBean的优点还在于Java带来的可移植性。EJB (Enterprise JavaBeans) 将JavaBean概念扩展到Java服务端组件体系结构,这个模型支持多层的分布式对象应用。除了JavaBeans,典型的组件体系结构还有DCOM和CORBA,关于这些组件体系结构的深刻讨论超出了本书的范围。
    JavaFX Sun刚刚发布了JavaFX技术的正式版,它使您能利用JavaFX 编程语言开发富互联网应用程序(RIA)。JavaFX Script编程语言(如下称为JavaFX)是Sun微系统开发的一种declarative,staticallytyped(声明性的、静态类型)脚本语言。JavaFX技术有着良好的前景,包括能够直接调用Java API的能力。由于JavaFXScript是静态类型,它一样具备结构化代码、重用性和封装性,如包、类、继承和单独编译和发布单元,这些特性使得使用Java技术建立和管理大型程序变为可能。
    JavaFX从它2007年发布以来,表现一直差强人意。Oracle收购了Sun以后,在JavaFX中投入了大量的精力进行推广和更新。JavaFX比较出名的应用应该是在2010年温哥华冬奥会上,调整了JavaFX中的不少概念,以及从新设计和实现了不少重要组件以后,获得的就是如今的JavaFX 2.0。JavaFX 2.0的beta版已经发布,正式版则定于2010年第3季度发布。JavaFX 2.0的新特性使得开发人员应该须要从新审视它在RIA开发领域中的位置。在不少状况下,JavaFX 2.0也会是不错的选择。
    JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入
管理功能的框架。JMX能够跨越一系列异构操做系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。
    JPA(Java Persistence API),JPA经过JDK 5.0注解或XML(标准通用标记语言的子集)描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。
    JSP(Java Server Pages)是由Sun Microsystems倡导、许多参与一块儿创建的一种动态网页技术标准。JSP技术有点相似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而造成JSP文件(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其余操做系统上运行。
编程

 框架服务
    Spring Framework【Java开源J2EE框架】
    Spring是一个解决了许多在J2EE开发中常见的问题的强大框架。
    Spring提供了管理业务对象的一致方法而且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是基于使用JavaBean属性的Inversion of Control容器。然而,这仅仅是完整图景中的一部分:Spring在使用IoC容器做为构建完关注全部架构层的完整解决方案方面是独一无二的。Spring提供了惟一的数据访问抽象,包括简单和有效率的JDBC框架,极大的改进了效率而且减小了可能的错误。Spring的数据访问架构还集成了Hibernate和其余O/R mapping解决方案。Spring还提供了惟一的事务管理抽象,它可以在各类底层事务管理技术,例如JTA或者JDBC事务提供一个一致的编程模型。Spring提供了一个用标准Java语言编写的AOP框架,它给POJOs提供了声明式的事务管理和其余企业事务--若是你须要--还能实现你本身的 aspects。这个框架足够强大,使得应用程序可以抛开EJB的复杂性,同时享受着和传统EJB相关的关键服务。Spring还提供了能够和IoC容器集成的强大而灵活的MVCWeb框架。【SpringIDE:Eclipse平台下一个辅助开发插件】。
    WebWork 【Java开源Web框架】
    WebWork是由OpenSymphony组织开发的,致力于组件化和代码重用的拉出式MVC模式J2EE Web框架。WebWork目前最新版本是2.1,WebWork2.x前身是Rickard Oberg开发的WebWork,但WebWork已经被拆分红了Xwork1和WebWork2两个项目。Xwork简洁、灵活功能强大,它是一个标准的Command模式实现,而且彻底从web层脱离出来。Xwork提供了不少核心功能:前端拦截机(interceptor),运行时表单属性验证,类型转换,强大的表达式语言(OGNL – the Object Graph Notation Language),IoC(Inversion of Control倒置控制)容器等。WebWork2创建在Xwork之上,处理HTTP的响应和请求。WebWork2使用ServletDispatcher将HTTP请求的变成Action(业务层Action类),session(会话)application(应用程序)范围的映射,request请求参数映射。WebWork2支持多视图表示,视图部分可使用JSP,Velocity,FreeMarker,JasperReports,XML等。在WebWork2.2中添加了对AJAX的支持,这支持是构建在DWR与Dojo这两个框架的基础之上。【EclipseWork:用于WebWork辅助开发的一个Eclipse插件】
Struts【Java开源Web框架】
    Struts是一个基于SunJ2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。因为Struts能充分知足应用开发的需求,简单易用,敏捷迅速,在过去的一年中颇受关注。Struts把Servlet、JSP、自定义标签和信息资源(message resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再本身编码实现全套MVC模式,极大的节省了时间,因此说Struts是一个很是不错的应用框架。【StrutsIDE:用于Struts辅助开发的一个Eclipse插件】
Hibernate 【Java开源持久层框架】
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了很是轻量级的对象封装,使得Java程序员能够为所欲为的使用对象编程思惟来操纵数据库。Hibernate能够应用在任何使用JDBC的场合,既能够在Java的客户端程序实用,也能够在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate能够在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Eclipse平台下的Hibernate辅助开发工具:【Hibernate Synchronizer】【MiddlegenIDE】
JDiy 【Java极速开发框架. 开源】
    JDiy是一款java极速开发框架,无需ORM,极少的代码即可以完成数据库的CRUD(增删改查);
可同时用于javaEE或者javaSE开发环境;完美支持各大主流数据库,如:MySQL, SQL Server, Oracle, DB2, PostgreSQL,SQLite;
同时JDiy内置一套精简而不失强大的智能开发平台(开发者登陆后,为所欲为地零代码生成网站管理系 
JFinal【Java极速WEB+ORM框架】
    jfinal是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言全部优点的同时再拥有ruby、python、php等动态语言的开发效率!主要特色1.MVC架构,设计精巧,使用简单 2.遵循COC原则,零配置,无xml 3.首创Db + Record模式,灵活便利 4.ActiveRecord支持,使数据库开发极致快速 5.自动加载修改后的java文件,开发过程当中无需重启web server 6.AOP支持,拦截器配置灵活,功能强大 7.Plugin体系结构,扩展性强 8.多视图支持,支持FreeMarker、JSP、Velocity9.强大的Validator后端校验功能 10.功能齐全,拥有struts2的绝大部分功能 11.体积小仅218K,且无第三方依赖
Quartz 【Java开源Job调度】
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它能够与J2EE与J2SE应用程序相结合也能够单独使用。Quartz能够用来建立简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。Jobs能够作成标准的Java组件或EJBs。Quartz的最新版本为Quartz 1.5.0。
Velocity 【Java开源模板引擎】
    Velocity是一个基于java的模板引擎(template engine)。它容许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。当Velocity应用于web开发时,界面设计人员能够和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员能够只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提供了便利,同时也为咱们在JSP和PHP以外又提供了一种可选的方案。Velocity的能力远不止web站点开发这个领域,例如,它能够从模板(template)产生SQL和PostScript、XML,它也能够被看成一个独立工具来产生源代码和报告,或者做为其余系统的集成组件使用。Velocity也能够为Turbine web开发架构提供模板服务(template service)。Velocity+Turbine提供一个模板服务的方式容许一个web应用以一个真正的MVC模型进行开发。【VeloEclipse :Velocity在Eclipse平台下的一个辅助开发插件】
IBATIS 【Java开源持久层框架】
    使用ibatis提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象,这一层与经过Hibernate 实现ORM 而言基本一致,而对于具体的数据操做,Hibernate 会自动生成SQL 语句,而ibatis 则要求开发者编写具体的SQL语句。相对Hibernate等“全自动”ORM机制而言,ibatis 以SQL开发的工做量和数据库移植性上的让步,为系统设计提供了更大的自由空间。做为“全自动”ORM 实现的一种有益补充,ibatis 的出现显得别具意义。
Compiere ERP&CRM 【Java开源ERP与CRM系统】

 

    Compiere ERP&CRM为全球范围内的中小型企业提供综合型解决方案,覆盖从客户管理、供应链到财务管理的所有领域,支持多组织、多币种、多会计模式、多成本计算、多语种、多税制等国际化特性。易于安装、易于实施、易于使用。只须要短短几个小时,您就可使用申购-采购-发piao-付款、报价-订单-发piao-收款、产品与订价、资产管理、客户关系、供应商关系、员工关系、经营业绩分析等强大功能了。

Apache MINA 【java开源socket框架】
    ApacheMINA是一个网络应用程序框架,用来帮助用户简单地开发高性能和高可扩展性的网络应用程序。它提供了一个经过java NIO在不一样的传输例如TCP/IP和UDP/IP上抽象的事件驱动的异步API。

 

 

 

开发工具
    IntelliJ IDEA【Java开发工具】
    IntelliJ IDEA是JetBrains的产品,比老一代Java开发工具Eclipse更漂亮,更智能。Google官方Android开发工具Android Studio就是基于intellij IDEA开发的。Intellij IDEA拥有出色的界面设计,使用Darculah黑色界面主题会让你爱不释手。在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、 创新的GUI设计等方面的功能能够说是超常的。IntelliJ IDEA分为商业版本,我的版本,与community社区版本。其中,community社区版本是免费的,可是功能性并不弱,对于学习者和我的开发者来讲彻底足够了。
    Eclipse 【Java开源开发工具】
    Eclipse平台是IBM向开放源码社区捐赠的开发框架,它之因此出名并非由于IBM宣称投入开发的资金总数 —4千万美圆,而是由于如此巨大的投入所带来的成果:一个成熟的、精心设计的以及可扩展的体系结构。
    NetBeans【Java开源开发工具】
    NetBeans IDE 是一个为软件开发者提供的自由、开源的集成开发环境。您能够从中得到您所须要的全部工具,用Java、C/C++ 甚至是Ruby 来建立专业的桌面应用程序、企业应用程序、web 和移动应用程序。此IDE 能够在多种平台上运行,包括Windows、Linux、Mac OS X以及Solaris;它易于安装且很是方便使用。
    XPlanner【Java开源项目管理】
    XPlanner 一个基于Web的XP团队计划和跟踪工具。XP独特的开发概念如iteration、user stories等,XPlanner都提供了相对应的的管理工具,XPlanner支持XP开发流程,并解决利用XP思想来开发项目所碰到的问题。XPlanner特色包括:简单的模型规划,虚拟笔记卡(Virtual note cards),iterations、user stories与工做记录的追踪,未完成stories将自动迭代,工做时间追踪,生成团队效率,我的工时报表,SOAP界面支持。
    HSQLDB【Java开源DBMS数据库】
    HSQLDB(Hypersonic SQL)是纯Java开发的关系型数据库,并提供JDBC驱动存取数据。支持ANSI-92 标准SQL语法。并且他占的空间很小。大约只有160K,拥有快速的数据库引擎。
    Liferay【Java开源Portal门户】
    表明了完整的J2EE应用,使用了Web、EJB以及JMS等技术,特别是其前台界面部分使用Struts 框架技术,基于XML的portlet配置文件能够自由地动态扩展,使用了Web Services来支持一些远程信息的获取,使用Apache Lucene实现全文检索功能。
    JetSpeed 【Java开源Portal门户】
    Jetspeed是一个开放源代码的企业信息门户(EIP)的实现,使用的技术是Java和XML。用户可使用浏览器,支持WAP协议的手机或者其它的设备访问Jetspeed架设的信息门户获取信息。Jetspeed扮演着信息集中器的角色,它可以把信息集中起来而且很容易地提供给用户。
    JOnAS 【Java开源J2EE服务器】
    JOnAS是一个开放源代码的J2EE实现,在ObjectWeb协会中开发。整合了Tomcat或Jetty成为它的Web容器,以确保符合Servlet 2.3和JSP 1.2规范。JOnAS服务器依赖或实现如下的Java API:JCA、JDBC、JTA 、JMS、JMX、JNDI、JAAS、JavaMail。
    JFox3.0 【Java开源J2EE服务器】
    JFox是Open Source Java EE Application Server,致力于提供轻量级的Java EE应用服务器,从3.0开始,JFox提供了一个支持模块化的MVC框架,以简化EJB以及Web应用的开发! 若是您正在寻找一个简单、轻量、高效、完善的Java EE开发平台,那么JFox正是您须要的。
    Java IDE
    当今最流行的是IntelliJ IDEA、Eclipse、Myeclipse、Jbuilder、Jdeveloper、Netbeans、JCreator等。
    JDK
    JDK是由一套独立程序构成的集合,每一个程序都是从命令行调用的,用于开发和测试Java程序。除了JDK,还可使用别的Java开发工具。

 

 


架构设计编辑
    概念
    软件架构做为一个概念,体如今技术和业务两个方面。
    从技术角度来讲:软件架构随着技术的革新不断地更新其内容,软件架构创建于当前技术和一些基本原则的基础之上。
基本原则:分层原则、模块化原则、接口实现分离原则、细节隐藏原则、依赖倒置原则


平台构架


    平台
    Java平台由Java虚拟机(Java Virtual Machine)和Java应用编程接口(Application ProgrammingInterface、简称API)构成。Java应用编程接口为此提供了一个独立于操做系统的标准接口,可分为基本部分和扩展部分。在硬件或操做系统平台上安装一个Java平台以后,Java应用程序就可运行。Java平台已经嵌入了几乎全部的操做系统。这样Java程序能够只编译一次,就能够在各类系统中运行。Java应用[10]  编程接口已经从1.1x版发展到1.2版。经常使用的Java平台基于Java1.5,最近版本为Java1.8。
Java分为三个体系JavaSE(Java2 Platform Standard Edition,java平台标准版),JavaEE(Java 2 Platform,Enterprise Edition,java平台企业版),JavaME(Java 2 Platform Micro Edition,java平台微型版)。
    Java SE
    Java SE(Java Platform,Standard Edition)。Java SE 之前称为J2SE。它容许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的Java应用程序。Java SE 包含了支持Java Web 服务开发的类,并为Java Platform,Enterprise Edition(Java EE)提供基础。
    Java EE
    Java EE(Java Platform,Enterprise Edition)。这个版本之前称为J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端 Java 应用程序。Java EE 是在Java SE 的基础上构建的,它提供Web 服务、组件模型、管理和通讯API,能够用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和Web 2.0 应用程序。
    Java ME
    Java ME(Java Platform,Micro Edition)。这个版本之前称为J2ME,也叫K-JAVA。Java ME 为在移动设备和嵌入式设备(好比手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。Java ME 包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对能够动态下载的连网和离线应用程序的丰富支持。基于Java ME 规范的应用程序只需编写一次,就能够用于许多设备,并且能够利用每一个设备的本机功能。


    发展前景编辑
    自从Sun被甲骨文收购之后,Java的发展前景就变得扑朔迷离起来,不少程序开发者都感到很迷惑。2010年4月9日,被称为Java之父的詹姆斯·高斯林又在我的博客上宣布离开Oracle,这一事件更为Java的前景增长了一层迷雾。可是在进入5月份以后,一切开始变得明朗起来。
    在Oracle的活动发布网站上,连续发布了多个关于Java的推广活动。5月12日,Oracle主要产品负责人Dave Hofert将大谈对JavaSE商业应用的改进和革新。根据宣传资料,在此次演讲中,DaveHofert将提到如下问题:商业版与社区版本之间平台支持的差别。如何得到专家帮助,以帮助企业加强其Java应用。对于旧版本的安全修补问题。可以使用的发布工具和更新。6月1八、1九、20、27日,将分别在赫尔辛基、斯图加特、布达佩斯、伦敦举行Oracle、Sun专家与用户见面会,在见面会上与用户一块儿探讨Java的发展路线。主要讨论的问题包括Oracle将如何继续投资和改进Java技术,而且还会向用户通报JavaSE、JavaME专家团队的最新消息、JavaFX和JDK7最新的消息,以及OracleBerkeley DB的相关信息。5月3日,已经离开Oracle近一个月的Java之父詹姆斯·高斯林在他的博客上表达了对NetBeans 6.9 和 FX1.3发布的关心。这两个项目最新版本的发布,能够证实Oracle已经开始兑现当初的承诺。詹姆斯·高斯林在其早期的博客中,也透露了不会放弃Java事业,只是须要解决一些与Oracle之间的法律问题。这一切迹象代表,Oracle绝对不会轻易放弃Java这块巨大的蛋糕,而且Oracle也开始逐渐学会了对开源社区的尊重。首先在JDK的商业版本方面,Oracle将会继续深刻挖掘Java的商业利益,与其固有产品进行更深刻的整合。在社区版本方面,Oracle将与Java开发者一块儿探讨和研发Java的技术。这里须要特别提到的一个产品是Oracle BerkeleyDB,该产品是Oracle一直支持的一个开源非关系数据库产品,在NoSQL大行其道的今天,若是Oracle可以将BerkeleyDB与Java进行深刻整合,将会为Java带来更多的活力和生命。从詹姆斯·高斯林的表现来看,他彷佛与Oracle之间已经达成某种谅解,而且有进一步合做的可能性。
    贡献及影响
    1991年,Sun的James Gosling,Bill Joe等人,为电视、控制家用电器的交互操做开发了一个Oak(橡树)软件,他是Java的前身。
    当时,Oak并无引发人们的注意,直到1994年,随着互联网和3W的飞速发展,他们用Java编制了HotJava浏览器,获得了Sun首席执行官Scott McNealy的支持,得以研发和发展。因为Oak商标已经被Oak Technology注册,1995年Oak短暂改名为Green,最后改名为Java。Java的得名还有段小插曲呢,一天,Java小组成员正在喝咖啡时,议论给新语言起个什么名字的问题,有人提议用Java(Java是印度尼西亚盛产咖啡的一个岛屿),这个提议获得了其余成员的赞同,因而就采用Java来命名此新语言。很快Java被工业界承认,如IBM Microsoft.DEC等购买了Java的使用权,并被美国杂志PC Magazine评为1995年十大优秀科技产品。今后,开始了Java应用的新篇章。
Java的诞生是对传统计算机模式的挑战,对计算机软件开发和软件产业都产生了深远的影响:
软件4A目标要求软件能达到任何人在任何地方在任什么时候间对任何电子设备都能应用。这样能知足软件平台上互相操做,具备可伸缩性和重用性并可即插即用等分布式计算模式的需求。
基于构建开发方法的崛起,引出了CORBA国际标准软件体系结构和多层应用体系框架。在此基础上造成了Java.2平台和.NET平台两大派系,推进了整个IT业的发展。
对软件产业和工业企业都产生了深远的影响,软件从以开发为中心转到了以服务为中心。中间提供商,构件提供商,服务器软件以及咨询服务商出现。企业必须重塑自我,B2B的电子商务将带动整个新经济市场,使企业得到新的价值,新的增加,新的商机,新的管理。
    对软件开发带来了新的革命,重视使用第三方构件集成,利用平台的基础设施服务,实现开发各个阶段的重要技术,重视开发团队的组织和文化理念,协做,创做,责任,诚信是人才的基本素质。
    Java模拟器
     Java手机游戏模拟器主要针对诺基亚S60系列手机以及其余大屏手机(小屏游戏也可运行,但不能全屏显示),是一款很是简单并且实用的JAVA游戏模拟器,能够正常运行绝大部分JAVA手机游戏!注:暂不支持游戏后缀名为sis的游戏。程序的使用是傻瓜式的,在电脑上安装好之后,全部的游戏jar文件都会和模拟器相关连,直接双击游戏jar文件就能够进入模拟器玩游戏啦!电脑的小数字键盘和方向键就能够直接控制游戏,与模拟器的按键相对应,固然也能够用鼠标直接点击控制。
    虚拟机
    Java虚拟机(Java Virtual Machine) 简称JVM,Java虚拟机是一个想象中的机器,在实际的计算机上经过软件模拟来实现。Java虚拟机有本身想象中的硬件,如处理器、堆栈、寄存器等,还具备相应的指令系统。
引入Java语言虚拟机后,Java语言在不一样平台上运行时不须要从新编译。Java语言使用模式Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就能够在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。
    字节码校验器,类加载器,垃圾回收机制(人为不可控制,优先级别最低)。
    内存模型
    在处理器层面上,内存模型定义了一个充要条件,“让当前的处理器能够看到其余处理器写入到内存的数据”以及“其余处理器能够看到当前处理器写入到内存的数据”。有些处理器有很强的内存模型,可以让全部的处理器在任什么时候候任何指定的内存地址上均可以看到彻底相同的值。而另一些处理器则有较弱的内存模型,在这种处理器中,必须使用内存屏障(一种特殊的指令)来刷新本地处理器缓存并使本地处理器缓存无效,目的是为了让当前处理器可以看到其余处理器的写操做或者让其余处理器能看到当前处理器的写操做。这些内存屏障一般在lock和unlock操做的时候完成。内存屏障在高级语言中对程序员是不可见的。
    相关消息
    在宣布修正Java严重0day漏洞的消息发出一天后,甲骨文发布了Java SE 7u11更新,它包含了安全漏洞CVE-2013-0422的补丁,同时也改变了默认的Java安全级别设置,任何未签名的Java Applet或Java Web Start应用程序运行时老是会被提示,这样能够防止恶意应用被下载,对用户来讲这可能会带来的影响是须要多确认一下。
    其余应用编辑
    Android是第一个内置支持Java的操做系统,
    Android应用程序使用Java语言编写。Android开发水平的高低很大程度上取决于Java语言核心能力是否扎实。另一方面,3G应用每每会和企业级应用相互结合。所以,在3G—Android课程体系中将Android课程与Java EE课程紧密结合,以Android课程为主,以Java EE课程为辅,配合真实的企业级项目,不但能够深刻掌握基于Android平台的智能手机开发技术,更重要的是还系统掌握了智能移动终端与Java EE服务器端相结合的诸多领域商业的应用。
Java试图经过新的方式解决软件编写的复杂性。不少人认为Java语言作到了它承诺的一切。可是Java并非一门完美的语言。
    总体性
    并非全部的工程和环境须要企业级别的复杂性,好比一个简单的我的网站或者独自编程的程序师所写的程序。这些程序师会发现Java的复杂管理对于本身要作的程序来讲过于强大了。一些人以为Java在面向对象上面作的没有Ruby和Smalltalk纯粹。可是最新出现的用Java实现的语言Groovy解决了这些问题。
    做为一种已经建立的新技术,Java显然综合了不少语言的特性,好比C++、C语言、Python等等。一些对于Java的评论认为Java的不变性在动摇。
    语言问题
    有些程序师不喜欢原始类型(primitive type)和类(class)的分离,尤为是那些曾经使用过Smalltalk和Ruby的程序师。Java的代码相对于其余的代码来讲过于冗长,这与它的轻便化声明相违背。
    Java是一种单层继承的语言。这也致使了程序师在试图使用多重继承时候的不便,而不少语言均可以使用这个特性。可是Java可使用接口类,把多重继承可能致使的风险减小到最小。Java不支持运算符重载,这是为了防止运算符重载使得代码的功能变得不清晰。可是用Java实现的语言Groovy能够进行运算符重载。过去Java对于文本的操做和其余语言,好比Perl和PHP相比差的较多,但Java在1.4版本时候引入了正则表达式。
    类库问题
    使用Swing平台编写的带有GUI(图形用户接口)的程序和其余原始程序很是不一样。选用AWT工具包编写程序的程序师看到的都是原始接口,并且也没法得到先进的GUI编程支持,若是使用的话,就要提供每一个平台上面所需的API,这将是一项庞大的工程。Swing则是彻底用Java语言所写的程序,避免了接口元素重复的问题,只使用全部平台都支持的最基本的绘图机制。可是不少用户不知道如何在Java风格和Windows风格之间进行转换,结果形成了Java程序的接口在不少程序中很是特殊。苹果电脑已经提供了优化过的Java运行时程序,包含了Mac OS X的经典Aqua接口风格。
    性能问题     因为Java编译器和虚拟机的不一样对Java代码的性能影响比语言自己的影响大的多,因此统一讨论Java的程序的性能常常是有误导性的。据IBM的数据,在一样的硬件上2001年时的IBMJDK版本的性能是1996年的JDK版本的十倍左右。即便是在同一时期,不一样JDK和JRE的性能也不同,好比SUN、IBM、BEA等都有本身开发的JDK和JRE。     Java语言的一些特性不可避免的有额外的性能代价。例如数组范围检查、运行时类型检查等等;Java程序的性能还会由于不一样的动态复杂性和垃圾处理机制使用的多少而各有不一样。若是JVM的实现比较优化的话,那么这些功能甚至能够增长存储器分配的性能。这和老是使用STL或者托管C++的程序的状况相似。     Java的设计目的主要是安全性和可携性,因此对于一些特性。好比对硬件架构和存储器地址访问的直接访问都被去除了,若是须要间接调用这些底层功能的话,就须要使用JNI(Java本地接口)来调用本地代码。而间接访问意味着频繁调用这些特性时性能损失会很大,微软的.NET平台也有这样的问题。

相关文章
相关标签/搜索