Java基本介绍php
JAVA 是一种跨平台的面向对象的程序设计语言,于1995年由Sun公司推出(2010年被Oracle收购了), JAVA平台包括三大部分:JavaEE(Java平台企业版),JavaME(Java平台微型版),JavaSE(Java平台标准版)。JavaSE也就是Java基础,用于开发Java桌面程序之类的,通常学习Java都从JavaSE开始,JavaEE能够说是Java Web开发,而JavaME是指移动开发和嵌入式开发(如今基本上已经淘汰了这个版本,无用武之地了)。html
1998年12月,SUN公司发布了JDK1.2,开始使用Java 2 这一名称,目前咱们已经基本再也不使用JDK1.1版本,因此咱们平时所说的Java都是指Java2。自Java1.2以后Java版本统称为Java2,因此咱们平时对Java Web开发,都叫 J2EE。其实如今随着JDK版本的不断发布,已经去“2”了,还原为Java EE,可是你们已经叫J2EE叫成习惯了。前端
本体系介绍,主要以J2EE为主。java
J2EE 简单介绍python
J2EE是一套全然不一样于传统应用开发的技术架构,包含许多组件,主要可简化且规范应用系统的开发与部署,进而提升可移植性、安全与再用价值。
J2EE平台由一整套服务(Services)、应用程序接口(APIs)和协议构成,它对开发基于Web的多层应用提供了功能支持,下面对J2EE中的一些主要技术规范进行简单的描述(简单看下,先有个印象就行,先知道这些名词就行):程序员
1:JDBC(Java Database Connectivity)web
JDBC API为访问不一样数据库提供了统一的路径,像ODBC同样,JDBC开发者屏蔽了一些细节问题,另外,JDBC对数据库的访问也具备平台无关性.spring
2:JNDI(Java Name and Directory Interface)数据库
JNDI API 被用于执行名字和目录服务.它提供了一致的模型来存取和操做企业级的资源DNS和LDAP,本地文件系统,或应用服务器中的对象.编程
3:EJB(Enterprise JavaBean)
J2EE技术之因此赢得普遍重视的缘由之一就是EJB.它提供了一个框架来开发和实施分布式商务逻辑,由此很显著的简化了具备可伸缩性和高度复杂的企业级应用程序的开发。EJB规范定义了EJB组件在什么时候如何与它们的容器进行交互做用。容器负责提供公用的服务,例如目录服务,事务管理,安全性,资源缓冲池以及容错性。但这里值得注意的是,EJB并非实现J2EE的惟一路径.正是因为J2EE的开放性,使得全部的厂商可以以一种和EJB平行的方式来达到一样的目地。
4:RMI(Remote Method Invoke)
远程方法请求,RMI协议调用远程对象上的方法。它使用了序列化的方式在客户端和服务器之间传递数据。RMI是一种被EJB使用的更底层的协议。
.
5:Java IDL/CORBA(通用对象请求代理架构是软件构建的一个标准 )
在Java IDL的支持下,开发人员能够将Java和CORBA集成在一块儿。他们能够建立Java对象并使之可在CORBA ORB中展开,或者他们还能够建立Java类并和其它ORB一块儿展开的CORBA对象客户。后一种方法提供了另一种途径,经过它Java能够被用于将你的新的应用程序和旧的系统集合在一块儿。
6:JSP(Java Server Pages)
JSP页面由HTML代码和嵌入其中的Java代码组成.服务器在页面被客户端所请求之后对这些Java代码进行处理,而后将生成的HTML页面返回给客户端浏览器.
7:Java Servlet
Servlet 是一种小型的Java程序,它扩展了web服务器的功能.做为一种服务器的应用,当被请求时开始执行,这和CGI Perl脚本很类似.Servlet提供的功能大多和JSP相似,不过实现的方式不一样.JSP一般是大多数的HTML代码中嵌入少许的Java代码,而servlet所有由java写成而且生成HTML。
8:XML
XML是一种能够用来定其它标记语言的语言.它被用来在不一样的商务过程当中共享数据.XML的发展和java是相互独立的,可是,它和java具备的相同目标是平台独立性。
9:JMS
MS是用于和面向对象消息的中间件相互通讯的应用程序接口.它既支持点对点的域,有支持发布/订阅类型的域,而且提供了下列类型的支持:消息传递,事务型消息的传递,一致性消息和具备持久性的订阅者支持.JMS还提供了另外一种方式来对新系统和旧后台系统相互集成。
10:JTA
JTA定义了一种标准API,应用程序由此能够访问各类事务监控。
11:JTS
JTS是CORBA OTS事务监控的基本实现.JTS规定了事务管理的实现方法.该事务管理器是在高层支持java Transaction API规范,而且在较低层次实现OMG OTS specification 和Java印象.JTS事务管理器为应用程序服务器,资源管理器,独立的应用以及同窗资源管理器提供了事务服务。
12:JavaMail
JavaMail是用于存取邮件服务器的API,它提供了一套邮件服务器的抽象类.不只支持SMTP服务器,也支持IMAP服务器.
13: JPA(Java Persistence API)
JPA经过JDK 5.0注解或XML(标准通用标记语言的子集)描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。
J2EE经常使用框架
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框架。
Struts【Java开源Web框架】
Struts是一个基于J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。因为Struts能充分知足应用开发的需求,简单易用,敏捷迅速,在过去的一年中颇受关注。Struts把Servlet、JSP、自定义标签和信息资源(message resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再本身编码实现全套MVC模式,极大的节省了时间,因此说Struts是一个很是不错的应用框架。
Hibernate 【Java开源持久层框架】
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了很是轻量级的对象封装,使得Java程序员能够为所欲为的使用对象编程思惟来操纵数据库。Hibernate能够应用在任何使用JDBC的场合,既能够在Java的客户端程序实用,也能够在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate能够在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
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这两个框架的基础之上。
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、Velocity。 9.强大的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模型进行开发。
IBATIS 【Java开源持久层框架】后来更名MYBATIS
使用ibatis提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象,这一层与经过Hibernate 实现ORM 而言基本一致,而对于具体的数据操做,Hibernate 会自动生成SQL 语句,而ibatis 则要求开发者编写具体的SQL语句。相对Hibernate等“全自动”ORM机制而言,ibatis 以SQL开发的工做量和数据库移植性上的让步,为系统设计提供了更大的自由空间。做为“全自动”ORM 实现的一种有益补充,ibatis 的出现显得别具意义。
Compiere ERP&CRM 【Java开源ERP与CRM系统】
Compiere ERP&CRM为全球范围内的中小型企业提供综合型解决方案,覆盖从客户管理、供应链到财务管理的所有领域,支持多组织、多币种、多会计模式、多成本计算、多语种、多税制等国际化特性。易于安装、易于实施、易于使用。只须要短短几个小时,您就可使用申购-采购-发票-付款、报价-订单-发票-收款、产品与订价、资产管理、客户关系、供应商关系、员工关系、经营业绩分析等强大功能了。
还有不少不少优秀的框架 如: Activiti(开源的工做流引擎),Lucene(开源全文搜索引擎)等等。
当今最流行的是Eclipse、Myeclipse、IntelliJ、Jbuilder、Jdeveloper、Netbeans、JCreator等。
Eclipse是开源免费的,Myeclipse是在Eclipse基础上作的一个商业版,要收费的。Jbuilder这些也是要收费的,由于Eclipse免费,因此Eclipse是使用量最多的。
因为Java的开源,使得Java枝繁叶茂,可是一样也带来了,Java体系的庞大甚至是臃肿。因此想要学习Java,须要一条清晰的学习路线。
从J2EE学习路线图来深度了解Java体系
下面是传智播客的Java学习路线图(本人从传智播客的视频中学到过不少东西~因此不介意有打广告的嫌疑哈),从下图中,咱们对java的技术体系就有个清晰的认识了。
这是传智播客2014年最新的Java学习路线图: http://java.itcast.cn/subject/javastudypath/index.shtml?j2,从这些路线图中,咱们能够把握当前主流的框架和技术。
J2EE架构的演变
一 Model1 模型架构
在Model1模型中,是以JSP为中心,这种模型中JSP既要作页面显示,又要结合业务逻辑处理服务端过程,简单说就是Model1开发没有Servlet,JSP中既有HTML代码又有逻辑代码。JSP页面的交互经过页面里的连接完成。
其实咱们一般把Model1做为一个基础来学习J2EE的开发流程。 这种架构太简单,简单到没有架构,通常都是入门学习才这么作。
二 Model2 模型架构
Model2对JSP的任务进行分离,将获取参数,调用逻辑这些和页面显示无关的转到Servlet处理,JSP只作显示便可。
这就是MVC的应用,Model2模型就是MVC模型,Asp.Net MVC 中的mvc也是应用的Model2模型。好处天然不用多说,结构清晰,解耦。
三 MVC+三层架构
在实际的开发过程当中一般还会把其中的业务逻辑再进行分离,分出持久层(数据访问),目的仍是为了划分职责,造成咱们经常使用的三层架构:
表示层:JSP/Servlet
业务逻辑层:业务逻辑处理
持久层:主要包装持久化逻辑
这个框架已是一个比较成熟的架构了~ Servlet对于MVC中的C,JSP/Html对应MVC中的V,而他们又能够做为 三层架构中的展现层,后面是业务逻辑层,持久层。 习惯上扔称之为MVC架构。
上面提到的是架构的演变,架构的演变过程当中,也产生了一些主流的开源框架,如经典的SSH,提出一种开发J2EE 企业级Web应用的轻量级解决方案。这些优秀的框架能够说是对架构各个层的具体封装实现。
SSH框架集成介绍
Struts :
Struts 是开源软件。使用Struts的目的是为了帮助咱们减小在运用MVC设计模型来开发Web应用的时间。若是咱们想混合使用Servlets和JSP的优势来创建可扩展的应用,struts是一个不错的选择。
Struts 是Apache软件基金会(ASF)赞助的一个开源项目。它最初是Jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目。它经过采用JavaServlet/JSP技术,实现了基于Java EEWeb应用的MVC设计模式的应用框架,是MVC经典设计模式中的一个经典产品。
Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差异巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器可以与ServletAPI彻底脱离开,因此Struts 2能够理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,可是相对于WebWork,Struts 2的变化很小。
如今在使用的大部分都是 Struts 2。
Spring :
Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著做Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而建立的。Spring使用基本的JavaBean来完成之前只可能由EJB完成的事情。然而,Spring的用途不只限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用均可以从Spring中受益。简单来讲,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
Hibernate
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了很是轻量级的对象封装,使得Java程序员能够为所欲为的使用对象编程思惟来操纵数据库。 Hibernate能够应用在任何使用JDBC的场合,既能够在Java的客户端程序使用,也能够在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate能够在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
SSH的集成搭建,请自行百度、谷歌尝试,不一样的版本总会遇到不一样的错误。集成搭建只是会有各类问题,目前可能仍是我对他们的深刻学习不够。
其余相关优秀的开源产品
Spring MVC
传统的web架构的view 表现层使用struts做为表现层。可是若是试用下spring自带的MVC,会发现spring 在通常场合彻底能够取代struts。从某些角度来讲,spring的mvc设计的更加合理,有兴趣的话不妨尝试下单个的spring的MVC。Spring MVC 大有要取代Struts 2地位的意思。如今Spring MVC的使用愈来愈主流。
Spring Data JPA
Spring开源组织给咱们带来了很是优秀的持久化框架。
Velocity
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,它也能够被看成一个独立工具来产生源代码和报告,或者做为其余系统的集成组件使用。
FreeMarker
FreeMarker容许Java servlet保持图形设计同应用程序逻辑的分离,这是经过在模板中密封HTML完成的。模板用servlet提供的数据动态地生成 HTML。模板语言是强大的直观的,编译器速度快,输出接近静态HTML页面的速度。
Log4J
Log4j是Apache的一个开放源代码项目,经过使用Log4j,咱们能够控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;咱们也能够控制每一条日志的输出格式;经过定义每一条日志信息的级别,咱们可以更加细致地控制日志的生成过程。最使人感兴趣的就是,这些能够经过一个配置文件来灵活地进行配置,而不须要修改应用的代码。
JFinal
JFinal 是基于Java 语言的极速 web 开发框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言全部优点的同时再拥有ruby、python等动态语言的开发效率。
太多太多了.....
目前的主流架构
1 struts2 + spring + hibernate
国内比较经典的架构,也是国内最多见的一种架构。
2 Spring MVC + Spring + (Spring Data JPa +)hibernate
这是如今比较流行的架构,Spring MVC 大有取代struts2 的架势。
项目包依赖管理工具Mavan,Ant
如今基本是都是使用Mavan,Ant使用的已经很少
Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明肯定义的项目对象模型来描述你的项目,而后Maven能够应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
Java Web 容器
tomcat ,jetty, websphere,jboss,weblogic 等等
Web 服务器
Apache , IIS,Nigx 等
源代码管理工具
SVN,GIT
在Java体系里面发现一个很奇怪的问题,一些框架或者技术百度出来的,解释根本看不懂,看来仍是一头雾水,不知道这却是是啥,应用场景在哪... Java中的名词,术语,技术简称太多太多了...
问:
1 什么是Javabean ?什么是EJB (Enterprise JavaBean)? 他们之间有什么区别与联系?EJB究竟是什么?
2 架构与框架,之间的区别与联系?
3 JSP+Servlet + Hibernate 与SSH架构联系?
4 MyBatis 与 hibernate 比较
参考资源:(参考资料只是参考,并不表明文章的正确性)
http://baike.baidu.com/subview/29/12654100.htm
http://baike.baidu.com/view/395208.htm
http://baike.baidu.com/view/1507.htm
http://blog.csdn.net/akkzhjj/article/details/37667261
http://blog.163.com/shanqing_shuixiu@yeah/blog/static/16531922920105282211813/
http://fenghuangwanghui.blog.163.com/blog/static/131807008201245101352761/
http://blog.csdn.net/alli0968/article/details/4231237
http://www.cnblogs.com/chehaoj/archive/2010/12/09/1901049.html
http://www.cnblogs.com/MyITHome/archive/2012/08/31/2665917.html
http://blog.csdn.net/jojo52013145/article/details/5783677
http://blog.csdn.net/songanling/article/details/22454973
http://www.cnblogs.com/sharpxiajun/p/3936268.html