J2那几个E和Web基础

收到PHP童鞋的反馈:

我觉得不用讲太基础的语法,基础语法大家自己去看,主要讲讲java web开发的一个流程,从开始写代码,到编译,发布,上线,回滚整个流程
大体上的环节,以及需要用到哪些工具
具体咋用…
还有java的东西太多了,什么j2ee j2me,什么tomcat, resin啥的,都是什么关系,我是搞不懂

看来上一篇写的讲的时候是用不上了。但是《极限编程》里提到的四个价值:沟通,简单,反馈和勇气。如果我不先写出一个样子来,客户自己可能也没有什么清晰的概念。我们必须敢于丢弃代码。编码和写作,在修改中走向成熟。

J2SE,J2ME,J2EE的2本来是指Java1.2以后的版本,因为这个版本有个质的飞越,其中包括双亲委派模型。但是大家现在基本都不知道2之前的版本长成什么样子,所以现在这三个方向已经改名为Java SE, Java ME, Java EE了。这其实是三个标准,我说我实现了J2SE就意味着我可以用J2SE的组件进行java程序的开发了。JAVA这些平台是java可伸缩性的一个提现。

Java SE

Java Standard Edition 标准版

主要用于桌面程序,控制台开发(JFC Java foundation classes)。我理解就是由Java自己的组件去画出界面。AWT(Abstract Window Tookit), Swing这些都是java用于画出图形界面的类库。做出来界面长成这种样子。也有界面长的好看的。比如说:eclipse。咱们用的这个集成开发环境就是Java SE开发的。

Java ME

Java Micro Edition 微缩版

主要用于早期的手机,机顶盒。Java SE是基础,将它精简一点,再增加一些为运行在资源非常有限的设备而专有的类。最初设计它是为各个厂商提供一个标准,各个厂商要用自己的方案支持Java ME。那么大家只要有Java ME就可以为厂商的产品开发java程序了。现在安卓出现之后,大家基本都在用Android SDK了。这个就过时了。

Java EE

Java Enterprise Edition 企业版

这是一组技术规范与指南。我们现在常说的SSH架构(struts+spring+hibernate)就是符合J2EE规范的。虽然咱们实际上用的不完全是这几种技术,架构核心是一样,就是说:咱们是做J2EE的。

Web容器

Tomcat, Resin, Jetty都是WEB容器,前几年JBoss,WebSphere,WebLogic也流行过来着。相当于PHP Web Server。想要完成的工作都差不多,实现上有不同。

提Web容器就不得不从Servlet说起。Servlet是用Java编写的服务器端程序。主要功能是交互式的浏览和修改数据,生成动态Web内容。其实Servlet是可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。

这么说是不是比较抽象?从程序的角度说:Servlet是一个在javax.servlet包里定义的接口。它为Servlet的生命周期声明了三个基本方法:init(), service()和destroy()。每个Servlet都要事先这些方法并在他们的生命周期的特定时间由服务器来调用这些方法。

这么说是不是还是比较抽象?其实对于java出身的童鞋我会直接奉上下面两张图:

简单来说:我们只需要关心业务逻辑的开发,不需要关心请求过来是怎么传到我们开发的类里的,这件事儿是servlet做的。PHP童鞋说:servlet是http协议的java实现库,也有道理。

那Web容器简单的说就是servlet的包装和实现。运行了web容器,一行代码不用写就可以通过http协议访问页面了。Tomcat, Resin, Jetty的区别简单来说就是实现方式不同,结果支持的并发数,响应请求速度都受影响。就好像三个java工程师A,B,C。来一个新需求,找谁都能做,但可能A干的比较快而已。

开发流程:

java web开发的流程,从开始写代码,到编译,发布。一个Eclipse就搞定。要放到线上环境:编译,发布,上线,回滚。这个一个Jenkins就搞定。

怎么写代码还是麻烦看看上一篇。编译是保存时自动执行的。因为eclipse都是默认勾选了自动build选项。

Debug或者是直接运行只要点击工程,右键Debug As --> Run with Jetty或者Run As --> Run with Jetty就OK了。

这个动手实验一下马上就能明白,关键先下载一个eclipse,官网上建议选择下图框中的版本。因为咱们做的是Java EE。这里面的插件会比较全,不然还要自己下载插件。下载下来eclipse把工程导进去,直接就可以运行哒。

PHP童鞋反馈说他们习惯人工打印调试,所以将java用命令行的方式来描述更好理解些:

  编译: javac命令 比如运行 javac HelloWorld.java 就会在目录下生成一个HelloWord.class文件,.class文件也叫字节码文件。这就是编译成功了。

     运行:  java命令  比如运行 java HelloWord.class 控制台上就会显示执行结果。

     在resin容器中运行的linux命令:

  从上面看到只是用java启动了一个resin(resin.jar是一个.class文件集合的压缩包,里面有包含目录结构的说明文件,java会根据那个文件去找)。

     所有我们写的代码都将编译好的.class文件还有需要的类库文件,配置文件,JSP文件等等放在一个目录下。

然后将这个文件路径配置到Resin配置文件里。

启动就可以了。

Jenkins嘛,运行一下就好了,一看就明白。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯移动品质中心TMQ的专栏

移动H5性能测试平台解决方案

1 平台的目的 说到H5性能测试,大家想到最多的是在PC端利用Firebug、Fiddle和HttpWatch等工具进行测试和性能指标的分析,但是如果我们测试的...

2195
来自专栏马洪彪

spss C# 二次开发 学习笔记(一)——配置数据源

由于项目的需要,使用Spss进行数据统计分析。 Spss对于数据统计分析的功能有多强主要是客户关注的事情,我所主要关注的是,Spss的二次开发有多复杂。 学习的...

3436
来自专栏智能计算时代

云计算架构:Azure]比较流,逻辑应用(Logic App),函数和 WebJobs

所有这些服务都可以解决集成问题并自动化业务流程。 它们都可以定义输入、操作、条件和输出。 可以在日程安排或触发器中运行其中一个。 但是,每种服务都有其独特的优点...

853
来自专栏坚毅的PHP

node.js进阶学习

简介 如果您听说过 Node,或者阅读过一些文章,宣称 Node 是多么多么的棒,那么您可能会想:“Node 究竟是什么东西?”尽管不是针对所有人的,但 Nod...

3897
来自专栏软件测试经验与教训

脚本开发和场景运行的检查点

2674
来自专栏架构师小秘圈

大型网站图片服务器架构的演进

作者:丁浪,非著名架构师。关注高并发、高可用的架构设计,对系统服务化、分库分表、性能调优等方面有深入研究和丰富实践经验。热衷于技术研究和分享。 声明:版权归丁浪...

3474
来自专栏用户2442861的专栏

java系统高并发解决方案之图片服务器分离

http://blog.csdn.net/jimmy609/article/details/37909013

702
来自专栏施炯的IoT开发专栏

Application Architecture Guide 2.0 - CH 19 - Mobile Applications(3)

本文翻译”Data Access”、” Debugging”、” Device”、” Exception Management”和” Logging”部分。 D...

1786
来自专栏Coding01

使用 PubSubHubbub 制作 RSS 定时器 —— Laravel RSS (三)

由于我们使用 xpath 方式去抓取网站的内容,这些网站更新了内容,但它们不会实时告诉你它们更新了;所以「RSS 阅读器如何做到所谓的的「更新」呢?」

892
来自专栏CodeSheep的技术分享

SpringBoot应用监控实战

2148

扫码关注云+社区