收到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嘛,运行一下就好了,一看就明白。

J2那几个E和Web基础的更多相关文章

  1. Golang友团无闻Go语言Web基础视频教程

    教程内容:GO语言资料Golang友团无闻Go语言编程基础Golang友团无闻Go语言Web基础教程 Go语言Web基础教程列表:[Go Web基础]12Go Web 扩展学习.mp4[Go Web基 ...

  2. HT for Web基础动画介绍

    在上一篇<基于HT for Web矢量实现3D叶轮旋转>一文中,我略微提了下HT for Web基础动画的相关用法,但是讲得不深入,今天就来和大家分享下HT for Web基础动画的相关介 ...

  3. Web基础开发最核心要解决的问题

    Web基础开发要解决的问题,往往也就是那些框架出现的目的 - 要解决问题. 1. 便捷的Db操作: 2. 高效的表单处理: 3. 灵活的Url路由: 4. 合理的代码组织结构: 5. 架构延伸 缓存. ...

  4. web基础--html

    WebBasic 1.web应用体系 课程大纲 1.web基础:做网页     2.结构:         a.html             勾勒网页结构及内容         b.css     ...

  5. java web基础环境搭建

    java web基础环境包括:(1)servlet容器也即tomcat(2)jre即java程序运行环境 环境变量配置:分别下载jdk和tomcat安装包. jdk环境变量配置: 第一步:系统环境变量 ...

  6. Web基础知识和技术

    WEB是一个外延广泛的概念,不单单指网站,乌徒帮专注拥有WEB界面的网站开发,帮助初学者或已经进入开发的朋友们提供参考讨论平台,然而并不一定能将所有的WEB知识讲全讲透,只是能满足初涉者的建站需求,能 ...

  7. java web基础 --- URL重定向Filter

    java web基础 --- URL重定向Filter httpRequest.getRequestDispatcher("/helloWorld").forward(httpRe ...

  8. (0)写给Web初学者的教案-----Web基础

    0,Web基础 一.    What is the Web? Can It Eat? 很多同学可能都听说过一个名词叫做“Web”,这个词隐隐约约好像和我们上网相关.但是呢,又很难说的清楚.我们今天每位 ...

  9. web基础系列(五)---https是如何实现安全通信的

    https是如何实现安全通信的 如果有不正确的地方,还望指出! web基础系列目录 总结几种常见web攻击手段极其防御方式 总结几种常见的安全算法 回顾 总结几个概念(具体描述可以看上一篇文章) 数字 ...

随机推荐

  1. c++ 继承类强制转换时的虚函数表工作原理

    本文通过简单例子说明子类之间发生强制转换时虚函数如何调用,旨在对c++继承中的虚函数表的作用机制有更深入的理解. #include<iostream> using namespace st ...

  2. App开发外包必须注意的四大骗局

    在app外包过程中有很多需要注意的事项,今天专门挑选注意事项中的"骗局"这个话题来与大家分享一些的常见骗局及其细节. 无论是从新闻还是身边的朋友,我们都经常可以听见"xx ...

  3. c#生成动态库并加载

    下面这段代码生成dll文件,不能编译运行.点击项目右键,点击生成,这时会在debuge文件中生成相应的配置文件. using System; using System.Collections.Gene ...

  4. Tree on the level UVa122

    很单纯的树的遍历,但是输入和方向好麻烦!!下面给出代码,题目来自UVa 122 #include<cstdio> #include<cstring> #include<v ...

  5. Log日志规范

    Overview 一个在生产环境里运行的程序如果没有日志是很让维护者提心吊胆的,有太多杂乱又无意义的日志也是令人伤神.程序出现问题时候,从日志里如果发现不了问题可能的原因是很令人受挫的.本文想讨论的是 ...

  6. RAC之常用方法-----新手入门

    年后换工作新入职,公司开发在使用RAC,之前居然一直没有了解过,独立开发的弊端,信息闭塞,而且自己也懒,这几天看了下RAC,确实很强大有木有. 什么是ARC 简单的说,RAC就是一个第三方库,他可以大 ...

  7. Node.js~在linux上的部署~pm2管理工具的使用

    之前写了两篇关于在linux上部署nodejs的文章,大家如果没有基础可以先看前两篇<Node.js~在linux上的部署>,<Node.js~在linux上的部署~外网不能访问no ...

  8. JavaScript中冒泡排序

    在我大学的时候,就已经接触到过很多的排序方式,只是那时候听得还很懵懂,大概知道这么个东西,也对冒泡排序有点印象,但真要我写,我是写不出来的.最近,在回顾js基础的时候,又接触到了冒泡排序.于是,就把冒 ...

  9. nodejs第二天之Buffer类

    2.1一个更好的操作二进制数据的类,我们在操作文件或者网络数据的时候,其实操作就是二进制数据,Node为我们提供了一个更加方便去操作这种数据流的类Buffer,它是一个全局的类. 2.2三种调用方式 ...

  10. Hibernate二级缓存原理

    缓存:缓存是什么,解决什么问题? 位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之为缓存Cache.缓存目的:让数据更接近于应用程序,协调速度不匹配,使访问速度更快 ...