# jdk应用开发生态

# Java SE

  • Java标准版,Standard Edition
  • 常用于开发桌面,服务器,嵌入式环境和实施环境的应用工程程序
  • JDK是JavaSE的根基,JavaSEJDK的组成,理论上二者可以划等号,但概念上不能

# Java EE

  • Javaa企业版,Enterprise Edition
  • 常用于开发服务器端java应用程序,即web应用
  • Java EE核心在于两个包:jsp-api.jar和servelt-api.jar,这两个包没有官方版本,但规范由其提出,此外还提出了一系列的规范
  • 实际上现在使用的最多的也是这个环境

# Java ME

  • Micro Edition
  • 常用于移动设备和嵌入式设备的java开发环境规范;

# Java EE的十三种核心技术规范

# JDBC

  • 为访问不同的数据库提供统一的标准途径
  • 对数据库的访问,也具有平台无关性

# JNDI

  • java naming and directory interfaces,java的命名和目录接口
  • 可用来定位各种对象,包括EJB、数据库驱动、JDBC数据源、消息连接等
  • 可用于访问特定的目录服务,如LDAP、NDS(服务器目录访问服务)

# EJB

  • Enterprise java Bean,将业务逻辑从客户端软件抽取出来,封装在组件中,这个组件运行在一个独立的服务器上;由于所处的历史环境,这个所谓的业务逻辑与现代web项目所说的业务还有一定的区别
  • EJB由多个元素构成,核心概念包括EJB组件,EJB容器,EJB服务器,EJB客户端
  • EJB客户端可运行在web容器中

# RMI

  • Remote Method Invoke,远程方法调用
  • 调用本地方法一样调用远程java虚拟机上的对象方法,使用序列化方式在客户端和服务器端传送数据
  • EJB的底层使用RMI实现

# IDL/CORBA

  • Interface Description Language/common object broker architecture,接口定义语言、共用对象请求代理程序体系结构
  • 没接触过,略

# Servlet

  • Server Applet,服务端小型应用程序
  • 动态网页机制

# JSP

  • Java Server Pages,优化版动态网页机制

# XML

  • Extensible Markup Language,可扩展标记语言
  • 具有平台独立性

# JMS

  • Java Message Service,java消息服务
  • JMS的客户端之间,可通过JMS进行异步的消息传输;
  • 用于消息中间件相互通信的api

# JTA

  • Java Transaction API,java事务API
  • 数据库事务是遵循该规范的一个实现

# JTS

  • Java Transaction Service,java事务服务
  • 组件事务监视器

# JavaMail

  • 存取邮件服务的API

# JAF

  • JavaBean Activation Framework,MIME编码与Java对象的相互转换
  • 没接触过

# Java EE核心总结

  • 在特定时代背景下,处理企业事务,归纳总结为以下几点

# 通信

  • java Mail, jaf
  • jms
  • xml

# 协作

  • JNDI
  • EJB
  • RMI

# 事务

  • JTA
  • JTS

# 产品

  • servlet
  • jsp

# web技术的发展线

# 早期Web技术

  • 最开始网页均为静态页面,用于浏览
  • 随着浏览静态页面不再满足要求,早期通过CGI实现动态网页需求,它通过进程协作实现动态网页

# Servlet时代

  • sun公司于1997年提出的服务端应用程序规范,作为JAVA阵营的CGI解决方案
  • Servlet运行依赖servlet容器,具体内容略。

# JSP时代

  • servlet的演进版本,具体内容略

# EJB

  • EJB与Servlet属于同时期的规范,二者解决问题的侧重点不同
  • Servlet解决动态网页的问题,EJB某种程度上解决的是中间件解耦的问题,官方定义为基于分布式事务处理的企业级应用程序的组件
  • EJB的与Servlet类似,需要有相应的运行环境;
  • EJB的属于J2EE中的业务逻辑层部分
  • 从个人角度来看,EJB本质上是一个分布式环境的支撑架构,且是特定时代背景下的

# 服务器容器对比

# tomcat容器

  • 免费,是JSP&Servlet容器,不支持EJB
  • 配合Jboss和apache可以实现j2ee应用服务器的功能
  • 本质上是一个线程池模型应用

# jboss容器

  • 免费,一个管理EJB的容器和服务器,但是不支持JSP&Servlet的web容器
  • 通常tomcatjetty绑定使用

# weblogic

  • 收费,j2ee应用服务器,支持jsp,servlet,ejb,jms等,全能型
  • 换言之,它既是一个EJB容器,又是一个Servlet容器,内部实现了j2ee工业强度的web应用服务器
  • 个人认为,性能优于tomcat,但是并不是因为基于EJB开发或基于servlet开发的差异(检索的某些信息有此描述),且在现代化软件架构环境下,此种性能差异可以忽略不计.

# weblogic的运行原理

  • 由于weblogic为收费应用,相关文档资料缺少,仅从自己的使用过程及体验进行简单的总结;

# adminServer

  • 报错可以从adminServerlogs日志中,看到具体的报错信息,必须通过具体的报错信息,制定解决的措施,adminServer页面上不一定会显示具体的错误信息
  • 仅在内网环境下使用网页端上传应用部署包,跨网时,不推荐使用网页上传部署包,可能会导致丢包或其它异常现象,且费时;此时可使用xshell控制台直接上传部署包
  • 上传到adminServer的upload的应用安装包,最终会派发给受管服务器;

# managedServer

  • 受管服务器,运行实际的应用信息,本质上就是一个web容器;
  • 受管服务器的应用缓存位置位于AppServer8005/stage目录下
  • 受管服务启动配置位于AdminServer/../config/deployments/xxx.war