Java体系结构包括四个独立但相关的技术:
    Java程序设计语言
    Java class文件格式
    Java API
    Java VM

 

用Java语言编译源代码,把它编译成Java Class文件,然后在Java VM中运行class文件;当编写程序时,通过调用类(Java API)中的方法来访问系统资源,而当程序运行时,它通过调用class文件中实现了Java API的方法也满足程序的Java API调用。Java VM和Java API一起组成了一个“平台”,所有Java程序都在其上编译和运行,因此,它们有时也被称作Java运行时环境。

 

Java VM的主要任务是装载class文件并且执行其中的字节码。Java VM包含一个类装载器(class loader),它可以从程序和API装载class文件;而Java API的类只在程序执行中需要时才会被装载。


Java字节码由执行引擎来执行。而不同的Java VM中,其执行引擎的实现可能各不相同。最简单的执行引擎不是一次性解释字节码,而另一种称为“即时编译器(just-in-time compiler)”的执行引擎执行速度更快,但要消耗更多的内存资源。即时编译模式下,第一次被执行的字节码会被编译成本地机器代码并缓存下来以实现“复用”。第三种执行引擎是所谓的自适应优化器,此种方法中,虚拟机始的时候解释字节码,介是会监视运行中程序的活动,并且记录下使用最频繁的代码。程序运行时,虚拟机只把那些活动最频繁的代码编译成本地代码,而不频繁的代码则仍然保留为字节码由虚拟机解释执行。自适应优化器可以使得Java VM在80%-90%的时间里执行被优化过的本地代码,而只需要编译10%-20%对性能有影响的代码。最后一种虚拟机由硬件芯片构成,它用本地方法执行Java字节码,其执行引擎内嵌于芯片中。

 

Java SE则包含了Java二进制程序(如JVM和Java字节码编译器)和Java的核心代码库,而Jave EE标准则包含了一组适用于创建企业级Web应用程序的API。Jave EE建立在Java SE的基础上,并依赖于Java SE才能正常工作。当然,任何级别的应用程序均能从Java EE中获益,但Jave EE却更适合解决大型软件系统设计中的问题

 

JAVA EE包含多个独立的API,Servlet和JSP就是其中的两个,而JAVA EE中著名的API中还包含如下的几个:

JAVA EE APIs:
    EJB(Enterprise JavaBeans):JAVA相关的诸多高级功能的实现,如RMI(Remote Method Invocation), 对象/关系映射,跨越多个数据源的分布式事务等;    

    JMS(Java Message Service):高性能异步消息服务,实现JAVA EE应用程序与非JAVA程序的“透明”通信;

    JMX(Java Management Extensions):在程序运行时对其进行交互式监控和管理的机制;

    JTA(Java Transaction API):允许应用程序在自身的一个或多个组件中平滑地处理错误的机制;

    JavaMail:通过工业标准的POP/SMTP/IMAP协议发送和接收邮件的机制;


Java SE APIs:
    JNDI(Java Naming and Directory Interface):用于与LDAP服务交互的API;
    JAXP(Java API for XML Processing):用于分析及转换XML(基于XSLT实现);

 

JAVA EE Application Servers:分为开源和未开源

    开源:Tomcat、Jetty、Resin;

    收费: Websphere、Weblogic、oc4j、JBoss、JOnAS、Geronimo、Glassfish;

 

Tomcat不是一个完整意义上的Jave EE服务器,它甚至都没有提供对哪怕是一个主要Java EE API的实现;但由于遵守apache开源协议,tomcat却又为众多的java应用程序服务器嵌入自己的产品中构建商业的java应用程序服务器,如JBoss和JOnAS。

尽管Tomcat对Jave EE API的实现并不完整,然而很企业也在渐渐抛弃使用传统的Java EE技术(如EJB)转而采用一些开源组件来构建复杂的应用。这些开源组件如Structs、Spring和Hibernate,而Tomcat能够对这些组件实现完美的支持。

 


对于一个Web应用程序而言,其通常由Servlets、JSP和其它文件等共同组成。这些文件通常被打包成WAR(Web Application Archive)格式,并以.war作为打包后的文件扩展名。而Servlet规范则定义了在WAR内部组织这些文件的标准目录结构。其目录和功用如下:
    ?/  Web应用程序的根目录,所有可被公开访问的文件均放置于此处,如HTML、JSP和图片文件等;
    ?/WEB-INF  此目录为私有资源目录,其内部的所有文件和子目录均不能被公开访问;包含着此Web应用程序的配置文件web.xml(程序结构描述符文件)通常放置于此目录;
    ?/WEB-INF/classes  当前Web应用程序的类文件的存在目录;
    ??/WEB-INF/lib  可被打包为JAR格式的类文件通常放置于此目录;

 

安装及配置Tomcat:

一、先安装jdk1.7.0_09

rpm -ivh jdk-7u9-linux-x64.rpm
vim /etc/profile.d/java.sh     添加以下两行:
export JAVA_HOME=/usr/java/latest
export PATH=$JAVA_HOME/bin:$PATH
. /etc/profile.d/java.sh

 

二、安装tomcat

tar xf apache-tomcat-7.0.42.tar.gz -C /usr/local/
cd /usr/local/
ln -sv apache-tomcat-7.0.42/ tomcat
vim /etc/profile.d/tomcat.sh  添加一下两行:
export CATALINA_HOME=/usr/local/tomcat
export PATH=$CATALINA_HOME/bin:$PATH
. /etc/profile.d/tomcat.sh
vim /etc/rc.d/init.d/tomcat    为tomcat提供服务脚本
#!/bin/sh
# Tomcat init script for Linux.
#
# chkconfig: 2345 96 14
# description: The Apache Tomcat servlet/JSP container.
# JAVA_HOME=/usr/java/latest
CATALINA_HOME=/usr/local/tomcat
export JAVA_HOME CATALINA_HOME
case $1 in
start)
$CATALINA_HOME/bin/catalina.sh start
;;
stop)
$CATALINA_HOME/bin/catalina.sh stop
;;
restart)
$CATALINA_HOME/bin/catalina.sh stop
sleep 2
$CATALINA_HOME/bin/catalina.sh start
;;
*)
echo "Uasge: `basename $0` {start|stop|restart}"
exit 1
;;
esac
chmod +x /etc/rc.d/init.d/tomcat  给脚本执行权限
chkconfig tomcat on
service tomcat start  启动测试,查看默认8080端口是否监听