收到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++11的线程池,简洁且可以带任意多的参数

    咳咳.C++11 加入了线程库,从此告别了标准库不支持并发的历史.然而 c++ 对于多线程的支持还是比较低级,稍微高级一点的用法都需要自己去实现,譬如线程池.信号量等.线程池(thread pool) ...

  2. nodejs笔记2 --关于nodejs最新启动方式

    1,运行应用以前是node app.js或者 supervisor app.js 2, 现在的应用方式是npm start或者supervisor bin/www

  3. 中国大学MOOC中的后台文件传输

    早期版本的中国大学MOOC一旦被挂起后,应用在完成当前下载任务后无法继续添加新任务,当然也无法将缓存状态写入数据库.这个问题能否顺利解决直接关系到用户体验. 顺便吐槽下,凡是使用了后台文件传输还提示你 ...

  4. [Hive] - Hive参数含义详解

    hive中参数分为三类,第一种system环境变量信息,是系统环境变量信息:第二种是env环境变量信息,是当前用户环境变量信息:第三种是hive参数变量信息,是由hive-site.xml文件定义的以 ...

  5. [Mysql] "Too many connections"

    刚刚在项目中遇到mysql数据库连接不够的问题,查了一点资料,记录下.异常信息主要为:Data source rejected establishment of connection, message ...

  6. STM32的LED驱动程序

    这个LED的小程序基于的是德飞莱的最小系统板 我当时写这个程序的时候想的就是这个程序能够便于理解 也便于移植 便于调用 我参加过电赛 对于STM32的一个管脚修改的麻烦是深有体会 一个地方不对就没法工 ...

  7. 对本地Solr服务器添加IK中文分词器实现全文检索功能

    在上一篇随笔中我们提到schema.xml中<field/>元素标签的配置,该标签中有四个属性,分别是name.type.indexed与stored,这篇随笔将讲述通过设置type属性的 ...

  8. 使用LVS+keepalived实现mysql负载均衡的实践和总结

    前言 经过一段时间的积累,数据库的架构就需要根据项目不断的进行变化. 从单台数据库,到了两台数据库的主从,再到读写分离,再到双主,现在进一步需要更多的数据库服务器去支撑更加可怕的访问量. 那么经过那么 ...

  9. ajax跨域请求时,sessionId不一样,导致无法记住登陆状态

    遇到这样一个场景,就是前端的域是dev,请求接口时,接口的域是beta,即使在服务端设置了cookie存放的域,'COOKIE_DOMAIN'   =>  '.roboming.com',虽然c ...

  10. Maven与Eclipse使用中遇到的问题解决之道

    在使用Maven以及Eclipse的Maven插件时,我和同事遇到了一下几个问题,本着知其然知其所以然的学习精神,总结如下: Unrecognised tag 问题 由于我使用本地代理仓库,所以set ...