搜档网
当前位置:搜档网 › J2EE学习中一些值得研究的开源项目和J2EE全攻略

J2EE学习中一些值得研究的开源项目和J2EE全攻略

J2EE学习中一些值得研究的开源项目和J2EE全攻略
J2EE学习中一些值得研究的开源项目和J2EE全攻略

这篇文章写在我研究J2SE、J2EE近三年后。前3年我研究了J2SE的Swing、Applet、 Net、RMI、Collections、IO、JNI......研究了J2EE的JDBC、Sevlet、JSP、JNDI…..不久我发现这些好像太浮浅了:首先,我发现自己知道的仅仅是java提供的大量的API,根本不能很好地使用它;其次,我根本就没有学到任何有助于写程序的知识,此时我也只不过能写个几页的小程序。出于这个幼稚的想法我研究了JDK中Collections、Logger、IO…..的源代码,发现这个世界真的很神奇,竟然有如此的高手――利用java语言最最基本的语法,创造了这些优秀的Framework。从此一发不可收拾,我继续研究了J2EE的部分,又发现这是一个我根本不能理解的方向(曾经有半年停滞不前),为什么只有接口没有实现啊!后来由于一直使用Tomcat、Derby等软件突然发现:哦!原来J2EE仅仅是一个标准,只是一个架构。真正的实现是不同提供商提供的。接着我研究了MOM4J、OpenJMS、Mocki、HSQLD……发现这些就是J2EE 的实现啊!原来软件竟会如此复杂,竟会如此做….规范和实现又是如何成为一体的呢?通过上面的研究发现:原来J2EE 后面竟然有太多太多理念、太多太多的相似!这些相似就是其背后的理念――设计模式!(很幸运,在我学java的时候,我一般学java的一个方向就会读一些关于设计模式的书!很幸运,到能领略一点的时候能真正知道这是为什么!)其实模式就是一种思维方式、就是一种理念……模式是要运用到程序中的,只有从真正的项目中才能领会模式的含义……

学得越多,发现懂得越少!在学习过程中发现一些很有用,很值得学习的开源项目,今天在此推荐给大家。

一、JavaServlet和JSP方向

很多人都是从Servlet和JSP步入J2EE的。它就是J2EE的表现层,用于向客户呈现服务器上的内容。J2EE很重要的方面。不罗嗦了!大家都知道的!下面就开始推荐吧!

1. Jakarta Tomcat

Apache基金会提供的免费的开源的Serlvet容器,它是的Jakarta项目中的一个核心项目,由Apache、Sun和其它一些公司 (都是IT界的大鳄哦)及个人共同开发而成,全世界绝大部分Servlet和Jsp的容器都是使用它哦!由于Sun的参与和支持,最新的Servlet和 Jsp规范总能在Tomcat 中得到体现。

不过它是一个非常非常全的Serlvet容器,全部源码可能有4000页,对于初学者或者一般的老手可能还是比较大了!在你有能力时推荐研究!下载地址:https://www.sodocs.net/doc/318061611.html,/tomcat/index.html

下面推荐两个小一点的吧!

2. Jetty

Jetty是一个开放源码的HTTP服务器和Java serverlet容器。源代码只有1000页左右,很值得研究。有兴趣可以去https://www.sodocs.net/doc/318061611.html,/下载看看。我曾经翻了一下,只是目前没有时间。(都化在博客上了,等博客基本定型,且内容完整了,再干我热衷的事件吧!)

3. Jigsaw

Jigsaw是W3C开发的HTTP,基于Java 的服务器,提供了未来 Web 技术发展的蓝图。W3C知道吧!(太有名气了,很多标准都是它制订的!有空经常去看看吧!)下载网址:https://www.sodocs.net/doc/318061611.html,/Jigsaw代码仅仅1000页左右。

4. Jo!

Jo!是一个纯Java的实现了Servlet API 2.2, JSP 1.1, 和HTTP/1.1的Web服务器。它的特性包括支持servlet tag,支持SSI,高级线程管理,虚拟主机,数据缓存,自动压缩text或 HTML文件进行传输,国际化支持,自动重新加载Servlet、Jsp,自动重新加载web工程文件(WARs),支持WAR热部署和一个Swing控制台。jo!可以被用做jboss和jakarta avalon-phoenix的web容器。下载地址https://www.sodocs.net/doc/318061611.html,/ 。我极力推荐大家在研究Tomcat之前研究该软件,主要是其比Tomcat小多了,且开发者提供比较全的手册。该方向研究这两个也就可以了!

二、JDBC方向

很多人都喜欢JDBC,数据库吗!很深奥的东西,一听就可以糊弄人。其实等你真正研究了数据库的实现后发现,接口其实真的太简单,太完美了!要想设计如此优秀的框架还是需要学习的。下面就推荐几个数据库的实现吧!

1. Hypersonic SQL

Hypersonic SQL开源数据库方向比较流行的纯Java开发的关系型数据库。好像不是JDBC兼容的,JDBC的很多高级的特性都没有支持,不过幸好支持ANSI- 92 标准 SQL语法。我推荐它主要是它的代码比较少1600页左右,如此小的数据库值得研究,而且他占的空间很小,大约只有160K,拥有快速的数据库引擎。推荐你的第一个开源数据库。下载地址:https://www.sodocs.net/doc/318061611.html,/。

2. Mckoi DataBase

McKoiDB 和Hypersonic SQL差不多,它是GPL 的license的纯Java开发的数据库。他的 JDBC Driver 是使用 JDBC version 3 的 Specifaction。他也是遵循 SQL-92 的标准,也尽量支持新的 SQL 特色, 并且支持Transaction的功能。两个可以选一个吧!下载地址:

https://www.sodocs.net/doc/318061611.html,/database/。

3. Apache Derby

学Java的数据库我建议使用Apache Derby ,研究数据库想成为一个数据库的高手我建议你先研究Apache Derby。Apache Derby是一个高质量的、纯 Java开发的嵌入式关系数据库引擎,IBM? 将其捐献给Apache开放源码社区,同时IBM的产品CloudSpace是它对应的产品。Derby是基于文件系统,具有高度的可移植性,并且是轻量级的,这使得它非常便于发布。主要是没有商业用户的很好的界面,没有其太多的功能。不过对于我们使用数据库、研究数据库还是极其有用的。对于中小型的企业说老实话你也不要用什么Oracle、SqlServer了,用Derby就可以了,何况是开源的呢!只要能发挥其长处也不容易啊!下载地址:https://www.sodocs.net/doc/318061611.html,/derby。

不过在没有足够的能力前,不要试图读懂它!注释和源代码15000页左右,我一年的阅读量!能读下来并且能真正领会它,绝对高手!你能读完Derby的源代码只有两种可能:1.你成为顶尖的高手――至少是数据库这部分;2.你疯了。选择吧!!!!作为我自己我先选择Hypersonic SQL这样的数据库先研究,能过这一关,再继续研究Derby!不就是一年的阅读量吗!我可以化3年去研究如何做一个数据库其实还是很值得的!有的人搞 IT一辈子自己什么都没有做,也根本没有研究别人的东西!

作为一个IT落后于别国若干年的、从事IT的下游产业“外包”的国家的IT从业人员,我认为还是先研究别人的优秀的东西比较好!可以先研究别人的,然后消化,学为己用!一心闭门造车实在遗憾!

三、JMS方向

JMS可能对大家来说是一个比较陌生的方向!其实JMS是一个比较容易理解,容易上手的方向。主要是Java消息服务,API也是相当简单的。不过在企业应用中相当广泛。下面就介绍几个吧!

1. MOM4J

MOM4J是一个完全实现JMS1.1规范的消息中间件并且向下兼容JMS1.0与1.02。它提供了自己的消息处理存储使它独立于关系数据与语言,它的客户端可以用任何语言开发。它可以算是一个小麻雀,很全实现也比较简单!它包含一个命名服务器,一个消息服务器,同时提供自己的持续层。设计也相当的巧妙,完全利用操作系统中文件系统设计的观念。代码也很少,250页左右,最近我在写该实现的源代码阅读方面的书,希望明年年中能与大家见面!下载地址:https://www.sodocs.net/doc/318061611.html,/index.html。

2. OpenJMS

OpenJMS是一个开源的Java Message Service API 1.0.2 规范的实现,它包含有以下特性:

1. 它既支持点到点(point-to-point)(PTP)模型和发布/订阅(Pub/Sub)模型。

2. 支持同步与异步消息发送。

3. JDBC持久性管理使用数据库表来存储消息。

4. 可视化管理界面。

5. Applet支持。

6. 能够与Jakarta Tomcat这样的Servlet容器结合。

7. 支持RMI, TCP, HTTP 与SSL协议。

8. 客户端验证。

9. 提供可靠消息传输、事务和消息过滤。

很好的JMS方向的开源项目!我目前也在研究它的源代码!学习它可以顺便研究JNDI的实现、以及网络通信的细节。这是我JMS方向研究的第二个开源项目。代码量1600页左右吧!下载地址:https://www.sodocs.net/doc/318061611.html,/index.html

3. ActiveMQ

ActiveMQ是一个开放源码基于Apache 2.0 licenced 发布并实现了JMS 1.1。它能够与Geronimo,轻量级容器和任Java应用程序无缝的给合。主要是Apache的可以任意的使用和发布哦!个人比较喜欢Apache 的源代码!下载地址:https://www.sodocs.net/doc/318061611.html,/

4. JORAM

JORAM一个类似于openJMS分布在ObjectWeb之下的JMS消息中间件。ObjectWeb的产品也是非常值得研究的!下面我还会给大家另外一个ObjectWeb的产品。下载地址:https://www.sodocs.net/doc/318061611.html,/

我个人推荐:OpenJMS和ActiveMQ!

四、EJB方向

EJB一个比较“高级”的方向。Sun公司曾经以此在分布式计算领域重拳出击。不过自从出现了Spring、Hibernation……后似乎没落了!这个方向单独开源的也比较少,主要EJB是和JNDI、JDBC、JMS、JTS、JTA结合在一起的是以很少有单独的。下面推荐两个不过好像也要下载其它类库。

1. EasyBeans

ObjectWeb的一个新的项目,一个轻量级的EJB3容器,虽然还没有正式发布,但是已经可以从它们的subversion仓库中检出代码。代码量比较小600页左右,熟读它可以对网络编程、架构、RMI、容器的状态设计比较了解了!即学会EJB又能学习其它设计方法何乐而不为哦!下载地址:https://www.sodocs.net/doc/318061611.html,/

2. OpenEJB

OpenEJB是一个预生成的、自包含的、可移植的EJB容器系统,可以被插入到任意的服务器环境,包括应用程序服务器,Web服务器,J2EE平台, CORBA ORB和数据库等等。OpenEJB 被用于 Apple的WebObjects。听起来很好,我目前没有研究过。不知道我就不推荐了。下载地址:https://www.sodocs.net/doc/318061611.html,/

五、J2EE容器

上面谈了这么多,都是J2EE的各个方向的。其实J2EE是一个规范,J2EE的产品一般要求专业提供商必须提供它们的实现。这些实现本身就是J2EE容器。市场上流行的J2EE容器很多,在开源领域流行的只有很少,很少。其中最著名的是JBoss。

1. JBoss

在J2EE应用服务器领域,Jboss是发展最为迅速的应用服务器。由于Jboss遵循商业友好的LGPL授权分发,并且由开源社区开发,这使得Jboss 广为流行。另外,Jboss应用服务器还具有许多优秀的特质。

其一,它将具有革命性的JMX微内核服务作为其总线结构;

其二,它本身就是面向服务的架构(Servic e-Oriented Architecture,SOA);

其三,它还具有统一的类装载器,从而能够实现应用的热部署和热卸载能力。因此,它是高度模块化的和松耦合的。Jboss用户的积极反馈告诉我们,Jboss应用服务器是健壮的、高质量的,而且还具有良好的性能。为满足企业级市场日益增长的需求,Jboss公司从2003年开始就推出了24*7、专业级产品支持服务。同时,为拓展Jboss的企业级市场,Jboss公司还签订了许多渠道合作伙伴。比如,Jboss公司同HP、 Novell、Computer Associates、Unisys等都是合作伙伴。

在2004年6月,Jboss公司宣布,Jboss应用服务器通过了Sun公司的J2EE认证。这是Jboss应用服务器发展史上至今为止最重要的里程碑。与此同时,Jboss一直在紧跟最新的J2EE规范,而且在某些技术领域引领J2EE规范的开发。因此,无论在商业领域,还是在开源社区,Jboss成为了第一个通过J2EE 1.4认证的主流应用服务器。现在,Jboss应用服务器已经真正发展成具有企业强度(即,支持关键级任务的应用)的应用服务器。

Jboss 4.0作为J2EE认证的重要成果之一,已经于2004年9月顺利发布了。同时,Jboss 4.0还提供了Jboss AOP(Aspect-Oriented Programming,面向方面编程)组件。近来,AOP吸引了大量开发者的关注。它提供的新的编程模式使得用户能够将方面(比如,事务)从底层业务逻辑中分离出来,从而能够缩短软件开发周期。用户能够单独使用Jboss AOP,即能够在Jboss应用服务器外部使用它。或者,用户也可以在应用服务器环境中使用它。Jboss AOP 1.0已经在2004年10月发布了。很有名吧!可以下载一个用一下,下载地址:https://www.sodocs.net/doc/318061611.html,/

关于JBoss的使用资料也非常多,甚至比商业软件的还多。有机会研究吧!

2. JOnAS

JOnAS是一个开放源代码的J2EE实现,在ObjectWeb协会中开发。整合了Tomcat或Jetty成为它的Web容器,以确保符合Servlet2.3和JSP 1.2规范。JOnAS服务器依赖或实现以下的Java API:JCA、JDBC、JTA 、JMS、JMX、JNDI、JAAS、JavaMail 。下载地址:https://www.sodocs.net/doc/318061611.html,/

3.Apache Geronimo

Apache Geronimo 是 Apache 软件基金会的开放源码J2EE服务器,它集成了众多先进技术和设计理念。这些技术和理念大多源自独立的项目,配置和部署模型也各不相同。 Geronimo能将这些项目和方法的配置及部署完全整合到一个统一、易用的模型中。作为符合J2EE标准的服务器,Geronimo提供了丰富的功能集和无责任 Apache 许可,具备“立即部署”式J2EE 1.4容器的各种优点,其中包括:

1. 符合J2EE1.4标准的服务器。

2. 预集成的开放源码项目。

3. 统一的集成模型。

4. 可伸缩性、可管理性和配置管理功能。

我一直比较推荐Apache的产品。主要是可以任意自由地使用。下载地址:https://www.sodocs.net/doc/318061611.html,/projects/geronimo/

六、其它

讲了这么多大家可能很厌烦了!是不是很多很多啊!其实不然,我们不会的太多太多了!不会的太多太多了。不管你是不是J2EE高手,还是J2SE 高手,有些东西你要绝对很精明的。例如:1.Java的Collections Framework就是java的数据结构了,不仅要吃透它,还要能按照需要扩展它,利用其思想创建一个自己的数据结构。2.网络编程肯定要会吧,现在以及以后很多程序都是不在同一台机器上的,不会网络怎么行哦!3.IO肯定要会的吧!你的程序难道不用输入输出数据啊!整个IO包加NIO也有600多页的源代码哦!4.JDBC你要会吧!数据库都不会,在你的企业应用中你的数据又保存到哪里啊!文件中――太落后了吧!典型的没有学过J2EE。尽管数据库背后也是采用文件保存的。5.Serverlet、JSp你要是做网页做网站,肯定要做到。问你一个简单的问题,网页中如何实现分页啊!有具体方法的就在本文章后发言吧!6. Ant要会吧!java语言中发布的工具,类似与c 中的make工具。7.JUnit用过吧!单元测试软件。你不要啊!你的软件就没有bug!你牛!(建议大家研究研究其源代码,很有用的框架,包含大量的设计模式,源代码不到100页!看了只能感叹――高手就是高手)细心的朋友可以看到在你使用的很多 IDE工具中都有JUnit哦!就是它。

一切的一切才刚刚开始!有兴趣,有需要你可以研究数据库连接池的框架,如:C3P0、Jakarta DBCP、DBPool….可以研究J2EE框架Spring……. Web框架Struts……持久层框架Hibernate…..甚至开发工具Eclipse…..Sun领导的点对点通信的JXTA…..报表工具 JFreeChart、JasperReports…..分布式网络编程的CORBA、网络通信的JGROUPS、XML解析的xerces…..(在不经意间开源已经步入你的电脑,不信啊!你JDK的安装目录jdk1.6.0 src com sun org apache就是Xerces,一个XML解析的著名的开源项目)

不管怎么样我还是建议从基本的做起,学精J2SE,熟读它的源码,准确了解其设计理念,然后分头击破J2EE――一口吃不成一个胖子!不要贪多贪广!脚踏实地就可以了!

===========================================================================================

该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。如果你学过 HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。然后你就该学一学Servlet 了。 Servlet就是服务器端小程序,它负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下 Javabean 了,可能你早就看不惯JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?还好,SUN提供了 Javabean可以把你的JSP中的Java代码封装起来,便于调用也便于重用。接着就是EJB了,EJB就是EntERPrise JavaBean,看名字好象它是Javabean,可是它和Javabean 还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的Weblogic,Websphere 这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看JavaMail了。

好了,对Java和J2EE有了一些基本概念之后,你就应该编一些程序了,千万不要纸上谈兵哦。最好找一些有实例且带光盘的书来看,这样看到好的程序就可以直接Ctrl+C再Ctrl+V,也不用劳您老大架再亲自把它再输一遍吧,再说接复制还不用怕出错,何乐而不为呢!还有就是要经常上一些好的Java编程文章,有好的文章要Cut下来,有问题尽管问,只要问题不是太傻,一般高手都会回答你的。

下面介绍几个好的Java方面的编程网站:

★赛迪技术社区 https://www.sodocs.net/doc/318061611.html,/ 最全面的Java技术文章,最全面的源代码下载地方。还有众多专家在线解答你的疑问。

★CSDN论坛https://www.sodocs.net/doc/318061611.html,/ 中国最有名的技术论坛,《程序员》杂志就是他们出版的,你可以在上面提出问题,马上就有人回答你,如果你觉得好,你可以给那人加分;

★Java研究组织https://www.sodocs.net/doc/318061611.html,/ 上面有很多原创文章,高手还是挺多的;

★Java开发者https://www.sodocs.net/doc/318061611.html,/那里Java资料比较全;

★https://www.sodocs.net/doc/318061611.html, https://www.sodocs.net/doc/318061611.html,/ 看这域名就知道有多牛,注册用户快接近一万了,同时在线人数也在一千左右,人气很旺的;

★IBM的开发者网络https://www.sodocs.net/doc/318061611.html,/developerWorks/cn/java/index.shtml IBM永远的蓝色巨人。

那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。所以你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他还愿意不厌其烦地教你,这样好象有点难哦!

还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力。学Java必读的两个开源程序就是Jive和Pet Store。

Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、 XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的 Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本?J道。Jive(J道版)是由中国Java界大名鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站 https://www.sodocs.net/doc/318061611.html,/去下载,或到同济技术论坛的服务器上ftp://https://www.sodocs.net/doc/318061611.html,去下,安装上有什么问题,可以到论坛上去提问。

Pet Store(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要错过了。

你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧,让你能够真正掌握接口或抽象类的应用,从而在原来的Java 语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。

关于设计模式的资料,还是向大家推荐banq的网站https://www.sodocs.net/doc/318061611.html,/ ,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。有时间再研究一下MVC结构(把Model-View- Control分离开的设计思想)吧,现在很流行的Struts就是它的一种实现方式,不过Struts用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring(重整)和极限XP编程,相信你又会上一个台阶。

做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧,你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的来了.......

当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用

QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?

哇,好高兴哦,我终于成为高手了!非也,非也。古人云:“识时务者为俊杰”。你知道计算机界现在的发展形势吗?你知道微软的.net蓝图和SUN ONE计划之间的明争暗斗吗?你知道计算机技术将向何处发展吗?其实从各大计算机厂商最近的动作,都可以看出来“Web服务将是下一代互联网应用的制高点”,而微软的.NET蓝图和SUN ONE计划的斗争焦点,也就是Web服务。Web服务就是一个崭新的分布式计算模型,它是一系列标准的综合(XML,SOAP,UDDI,WSDL和 WSFL等)。它使得不同语言编写的软件能够轻易的集成起来,使网络资源和Web站点变成一种服务而不是混乱的垃圾场。不远的将来,我们就可以在家里点击一下鼠标,就可以完成出门旅游的全部准备工作,包括定飞机票,定旅游线路,定好房间等。请注意,这所有的一切都是Web站点间自动完成的,再也不用象现在一样,表面上是电子商务,实际上很多环节都是人工操作。也许你会觉得这是天方夜谈,不过就近的说,你也很有可能承接一个项目,要集成两个企业的ERP系统。很有可能上游企业的系统是用Delphi编的,而下游企业的系统是用Java 编的。你说你是Java高手,大家都看者你怎么做呢。所以啊,你还得学习新技术,如Web服务,而且你Delphi也要懂一点吧(Delphi6现在已经提供Web服务的控件了)。你编的Java系统,可能要和.NET集成,所以你.NET要懂一点吧?到最后,你可能发现你已经成为Java高手了,但很多时间却在搞别的技术。太极张三丰里说,最厉害的招式就是没有招式,可能就是这个道理吧!

问题1:对书中的细节要形成记忆吗?

这个要看你理解的深不深刻了,一遍不行两遍,多看几遍。

问题2:下一步我该如何学习?

多写代码。

问题3:如何研读好的源代码?(需要背下来吗?)

需要你有好奇心了,想知道别人怎样实现一个功能的,如果只是为了看源码而看,那就事倍功半了。至于背下来就没必要了,把握关键的东西,毕竟编程是一个创造的过程。

强烈建议阅读Java宠物店的源代码

研究源代码,自己写程序,不断的实验,失败,再不断的成功,你就能够成功了.

踏下心来作几个项目。

软件构架、架构和框架的区别

软件构架、架构和框架的区别 nizhigang2000的文章 软件框架(Software Framework)介绍 面向某领域(包括业务领域,如ERP,和计算领域,如GUI)的、可复用的“半成品”软件,它实现了该领域的共性部分,并提供一系列定义良好的可变点以保证灵活性和可扩展性。可以说,软件框架是领域分析结果的软件化,是领域内最终应用系统的模板。 随着软件规模的扩大、应用的广泛和软件复用技术的发展,以子程序或类(Class)为单位的软件复用有许多不足:(1)子程序库日趋其庞大以致于使用人员难以掌握,(2)大多数类粒度很小,且其自身往往不能完成有用的功能。这一问题迫使人们在复用中将一组类(或模块)及其交互作为一个整体来考虑,由此出现了软件框架。 软件框架至少包含以下组成部分: (1)一系列完成计算的模块,在此称为构件。 (2)构件之间的关系与交互机制。 (3)一系列可变点(也称热点,Hot-spots,或调整点)。 (4)可变点的行为调整机制。 开发人员通过软件框架的行为调整机制,将领域中具体应用所特有的软件模块绑定到该软件框架的可变点,从而得到最终应用系统,这一过程称为软件框架的例化(instantiation)。通过软件框架的使用,开发人员可将主要精力放在应用所特有的模块的开发上,从而大大提高了软件生产率和质量。 软件框架的行为调整机制是指如何针对具体的应用调整该框架的可变部分、如何在可变点加入特定应用模块所采用的方法和规则。行为调整机制可分为四种: (1)模板参数化。软件框架提供代码自动生成工具,该工具根据用户设置的参数自动生成所需的代码。 (2)继承和多态。通过面向对象中的子类继承和重载,在子类中加入新的功能或改变父类的行为。 (3)动态绑定。在运行时刻动态绑定所需的对象服务,可通过软件模式技术实现。 (4)构件替换。通过替换框架中可插拔的构件来加入业务特定的功能, 不同于一般的可复用软件制品,软件框架的一个显著特点是逆向控制(Inversion of Control),在复用过程中,前者需被显式调用,控制是在应用特定的模块中,软件框架则不然,应用开发人员只要将应用特定的模块绑定到框架内,框架则根据自己的交互机制自动调用该模块,控制由框架负责。 软件框架有很多种。按其应用的范围可分为: (1)系统基础设施框架。用于简化系统级软件的开发,如操作系统、用户界面、语言处理等,典型例子为MacApp, Microsoft’s MFC等。 (2)中间件集成框架。用于组装分布式应用和构件,典型例子为Microsoft’s DCOM, JavaSoft’s RMI, OMG’s CORBA等 (3)企业应用框架。用于各类应用领域,如电信、制造业、金融等。 按其表现形态可分为: (1)白盒框架。支持白盒复用,大型的类库或子程序库通常均提供白盒框架来协助复用。(2)黑盒框架。支持黑盒复用。中间件集成框架一般为黑盒框架。 构架和架构也就是通常所说的软件体系结构(software architecture).体系结构一般包括三个部分:构件,用于描述计算;连接器,用于描述构件的连接部分;配置,将构件和连接器组成一个有

Java中常见设计模式面试题

Java中常见设计模式面试题 一、设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 1.请列举出在JDK中几个常用的设计模式? 单例模式(Singleton pattern)用于Runtime,Calendar和其他的一些类中。工厂模式(Factory pattern)被用于各种不可变的类如Boolean,像Boolean.valueOf,观察者模式(Observer pattern)被用于 Swing 和很多的事件监听中。装饰器设计模式(Decorator design pattern)被用于多个 Java IO 类中。 2.什么是设计模式?你是否在你的代码里面使用过任何设计模式? 设计模式是世界上各种各样程序员用来解决特定设计问题的尝试和测试的方法。设计模式是代码可用性的延伸 3.Java 中什么叫单例设计模式?请用Java 写出线程安全的单例模式 单例模式重点在于在整个系统上共享一些创建时较耗资源的对象。整个应用中只维护一个特定类实例,它被所有组件共同使用。https://www.sodocs.net/doc/318061611.html,ng.Runtime是单例模式的经典例子。从 Java 5 开始你可以使用枚举(enum)来实现线程安全的单例。 4.在 Java 中,什么叫观察者设计模式(observer design pattern)?

总结Java部分的框架和开源项目

总结Java部分的框架和开源项目 Spring Framework【Java开源JEE框架】 Spring是一个解决了许多在J2EE开发中常见的问题的强大框架。Spring提供了治理业务对象的一致方法同时鼓舞了注入对接口编程而不是对类编程的良好适应。Spring的架构基础是基于使用JavaBean属性的InversionofControl容器。然而,这仅仅是完整图景中的一部分:Spring在使用IoC容器作为构建完关注所有架构层的完整解决方案方面是独一无二的。 Spring提供了唯独的数据访问抽象,包括简单和有效率的JDBC框架,极大的改进了效率同时减少了可能的错误。Spring的数据访问架构还集成了Hibernate和其他 O/Rmapping解决方案。Spring还提供了唯独的事务治理抽象,它能够在各种底层事务治理技术,例如JTA或者JDBC事务提供一个一致的编程模型。 Spring提供了一个用标准Java语言编写的AOP框架,它给POJOs提供了声明式的事务治理和其他企业事务--假如你需要--还能实现你自己的aspects。那个框架足够强大,使得应用程序能够抛开EJB的复杂性,同时享受着和传统EJB相关的关键服务。Spring 还提供了能够和IoC容器集成的强大而灵活的MVCWeb框架。【SpringIDE:Eclipse平台下一个辅助开发插件】 WebWork【Java开源Web开发框架】 WebWork是由OpenSymphony组织开发的,致力于组件化和代码重用的拉出式MVC模式J2EEWeb框架。WebWork目前最新版本是2.1,现在的WebWork2.x前身是RickardOberg开发的WebWork,但现在WebWork差不多被拆分成了Xwork1和WebWork2两个项目。Xwork简洁、灵活功能强大,它是一个标准的Command模式实现,同时完全从web层脱离出来。 Xwork提供了专门多核心功能:前端拦截机(interceptor),运行时表单属性验证,类型转换,强大的表达式语言(OGNL–theObjectGraphNotationLanguage), IoC(InversionofControl倒置操纵)容器等。WebWork2建立在Xwork之上,处理的响应和要求。WebWork2使用ServletDispatcher将要求的变成Action(业务层Action类),session(会话)application(应用程序)范畴的映射,request要求参数映射。 WebWork2支持多视图表示,视图部分能够使用 JSP,Velocity,FreeMarker,JasperReports,XML等。在WebWork2.2中添加了对AJAX 的支持,这支持是构建在DWR与Dojo这两个框架的基础之上.【EclipseWork:用于WebWork辅助开发的一个Eclipse插件】 Struts【Java开源Web开发框架】

J2EE期末考试复习题

一、填空题 发布到服务器上的组件除包含自身实现的代码文件外,还要包含一(XML)部署描述文件。 Java EE技术框架可分为三部分:组件技术、(服务技术)、通信技术。 Servlet 最大的用途是通过(动态响应)客户机请求来扩展服务器功能。 表单数据的提交方法有两种,(Post)方法和Get方法。 (Filter)拦截请求和响应,以便查看、提取正在客户机和服务器之间交换数据。 (Listener)实现了Servlet的事件驱动。 JSP页面的脚本元素用来嵌入(java)代码。 JSP动作组件是一些(XML)语法格式的标记,被用来控制Web容器的行为。 JSP供提供九种内置对象,(request)对象代表的是来自客户端的请求。 JSP 标准标记库是一个实现(Web )应用程序中常用功能的定制标记库集。 java.sql.Statement对象代表一条发送到数据库执行的SQL语句。有(三)种Statement 对象。 Servlets可以使用(MIME)类型来向浏览器传送非HTML 文件。 Enterprise Bean 是在(多)台机器上跨几个地址空间运行的组件。 JavaBean 是(一)台机器上同一个地址空间中运行的组件。 在标记描述TLD文件中Required 定义为(true)代表为必须。 二、单项选择题

1、表单数据的提交方法有两种, ()方法使得数据由标准的输入设备读入。 A.Get B. Post C.Read D.Input 2、在表单提交的数据中,如果变量的值有多个,这时应调用( )方法, A. getParameterValues() B. getParameter() C. getParameterNames() D. getAttribute() 3、Servlet的事件驱动由()实现。 A. Filter B. Listener C . Response D. Request 4、标记名称由两部分组成,( )用来区分不同标记库. A. 后缀 B. 前缀 C.JSP D. bean 5、客户机对Servlet的请求和Servlet对客户端的响应,都是通过( )来实现的。 A、EJB B、XML C、API D、Web服务器 6、获取数据库连接的方法是()。 A、Connection() B、getConnection() C、Con D、getContent() 7、常用的接收邮件的协议是() A、SMTP B、POP3 C、IMAP D、MIME 8、()用来获取一个已被创建的JavaBean组件的属性值。 A、 B、 C、 D. 9、要对体内容进行操作的标记,必须继承的接口是()。 A. javax.Servlet.jsp.tagext. Tag B.javax.Servlet.jsp.tagext.BodyTag C. javax.Servlet.jsp. Tag D. 三个都必须 10、core标记库主要的标记有()

五个开源软件解决方案

计算机世界/2006年/10月/9日/第B15版 开源软件?方案评析 《计算机世界》方案评析实验室推荐 五个开源软件解决方案 在此次征集的开源软件解决方案中,经过组织专家评选,《计算机世界》方案评析实验室推荐了5个开源软件解决方案。本报在此摘登其内容概要,有兴趣的读者可登录计世网(https://www.sodocs.net/doc/318061611.html,)查询方案全文。 开源软件解决方案 邮区中心局生产作业系统是全国邮政综合网非常重要的应用系统之一,红旗软件为其搭建了一个高效、稳定、安全的系统平台。 中科红旗 搭建邮区中心局作业系统 方案背景 邮区中心局生产作业系统是邮政综合网系统的一个重要组成部分,按照邮政生产的四大基本环节(收寄—处理—运输—投递)划分,邮区中心局主要负责邮件的处理和运输任务,它是一个邮区的邮件处理中心。 邮区中心局生产作业系统不仅要完成一个邮区中心局内邮政生产作业系统的计算机数字化、自动化和信息化的生产运作和管理,更要以此为基础构造一个全国性统一的邮政生产作业网络系统。因此该系统不只是在邮区中心局内的一个生产作业系统,更是作为全国邮区中心局间的邮件运输、交接、生产作业、业务查询、信息交换等系统的有机组成部分,承担着对局站间的物流和信息流处理的重要职责。 邮区中心局生产作业系统作为全国邮政综合网非常重要的应用系统之一,为更好地服务于目前及将来的业务需求,应尽量利用现有资源,该系统的设计、开发、实施、运行应遵循实用性、开放性、综合性、统一性以及安全性等原则。 部署实施过程 在中心机房采用了Red Flag DC Server作为操作系统,采用Red Flag HA Server对数据库及应用做系统热备份; 在生产车间采用Red Flag DC Server作操作系统。 ●生产中心 生产中心是邮区中心局生产作业系统的数据中心,在此设置枢纽服务器,存储管理邮区中心局生产作业系统的生产数据,同时还是邮区中心局内和综合网其他系统的数据交换枢纽。生产中心服务器系统分为数据库服务器和应用服务器两部分。 数据库服务器 数据库服务器是整个业务系统的核心,采用 Oracle作为数据库管理平台,数据库服务分为生产数据库和历史数据库两个实例,为了保证其7x24小时不间断地提供服务,采用两台IBM xSeries 255运行Red Flag DC Server操作系统,通过红旗高可用(HA)集群软件组成高可用系统。 应用服务器和Web服务器 邮区中心局生产作业系统的应用服务器采用Tuxedo作为中间件平台的生产作业应用系统,而对于历史数据系统采用的是在Weblogic系统上的B/S模式的数据管理及查询系统,应用服务器及Web服务器系统同样要确保其7x24小时不间断提供服务,这就要求系统同样具有极高的可靠

J2EE期末考试深刻复知识题(88份)

J2EE期末考试试题(笔试) A卷 姓名:学号: 注意事项:(考试时间90分钟) 1)整个试卷中不得做任何形式的书写或标记,是否试卷成绩做废; 2)认真准确填写并核对答题卡中的各项内容,因填涂错误造成的任何后果,由考生自负; 3)考试完毕,不得将所有考卷.答题卡.草稿纸带离考场,否则试卷成绩作废; 4)作弊,雷同答卷,成绩一律为0分 答题结束后,必须经监考老师确认考卷,答题卡,草稿纸已经提交后,方可离开考场 一、选择题(单项选择,每题2分,共50题) 1、下面对Web应用开发中Servlet组件说法错误的是。 A)Servlet是按照接受请求/返回响应的模式工作的 B)运行于Servlet容器中,是被动态加载的 C)在Struts框架中,Servlet充当模型组件 D)在Struts框架中,Servlet充当控制器组件 2、在Struts应用中,能在下列哪几种范围内共享数据说法错误的是。A)只有request与session B)request

C)session D)application 3、下面那个选项不属于MVC三个核心模块。 A)模型 B)视图 C)数据库连接 D)控制器 4、下列关于Struts框架的说法中,正确的是。 A)Struts实质是在JSP Model2的基础上实现的一个MVC框架 B)在Struts框架中,模型是由实现业务逻辑的JavaBean与EJB组件构成C)在Struts框架中,视图是由一组JSP文件组成 D)以上都是 5、关于在web.xml文件中配置欢迎文件清单说法错误的是。 A)使用元素配置欢迎清单 B)只能配置一个欢迎文件 C)可以配置多个欢迎文件 D)Web容器调用会依次寻找欢迎文件,直到找到为止 6、下列哪个元素可以配置数据源。

J2EE复习题

填空题 1.MVC模式中,M代表(Model(模型)),V代表(View(视图)),C代表(Controller(控制器))。2.Struts2框架主要有两个核心配置文件:struts.properties和(struts.xml)。 3.struts2的框架校验包含字段校验和(非字段校验)。 单项选择题 1.J2EE中,( D )类的()方法用于创建对话。 A.HttpServletRequest、getSession B.HttpServletResponse、newSession C.HtttpSession、newInstance D.HttpSession、getSession 2.下列哪个不是HTML的常用标记(D) A. B. C. D. 3.在Servlet里,能正确获取session的语句是(A) A.HttpSession session = request.getSession( ); B.HttpSession session = request.getHttpSession( ); C.HttpSession session = response.getSession( ); D.HttpSession session = response. getHttpSession ( ); 4.下列(A)实现单击超级链接是弹出确认对话框,询问用户是否真的删除。 A. 删除 B. 删除 C. 删除 D. 删除 5.不属于Action接口中定义的字符串常量的是( B ) A.INPUT B.FAILURE C.SUCCESS D.ERROR 6.J2EE中,JSP EL表达式:${user.loginName}的执行效果等同于(A)。 A.<%=user.getLoginName()%> B.<%=user.getLoginName();%> C.<%=user.loginName%> D.<%=user.loginName;%> 7.在J2EE中,下列( C )语句可以获取页面请求中的一个文本框的输入的内容(文本框的名字为:title)。 A.response.getParameter(“title”); B.request.getAttribute(“title”); C.request.getParameter(“title”); D.request.getParamet ers(“title”); 8.给定JSP程序源码如下,该JSP运行后输出的结果是(B ) <% int count =1;%> Count: <%=++count%> A.Count:1 B.Count:2 C.1:2 D.Count 9.在JavaScript中window对象的(D )方法用于关闭当前窗口。 A.open() B.confirm() C.alert() D.close() 10.Tomcat服务器的默认端口为(C) A.8888 B.8001 C.8080 D.80 11.资源文件的后缀名为( D ) A.doc B.txt C.property D.properties 12.在Servlet里,能正确获取session的语句是(A) A.HttpSession session = request.getSession( ); B.HttpSession session = request.getHttpSession( ); C.HttpSession session = response.getSession( ); D.HttpSession session = response.getHttpSession ( );

GitHub上最受欢迎的57个深度学习开源项目

GitHub上最受欢迎的57个深度学习开源项目TensorFlow 作为谷歌的第二代机器学习系统,TensorFlow在过去的一年里成为了github上当之无愧的最受欢迎项目。按照谷歌所说,在某些基准测试中,TensorFlow 的表现比第一代的DistBelief 快了2倍。TensorFlow 内建深度学习的扩展支持,任何能够用计算流图形来表达的计算,都可以使用TensorFlow。任何基于梯度的机器学习算法都能够受益于TensorFlow 的自动分化(auto-differentiation)。通过灵活的Python 接口,要在TensorFlow 中表达想法也会很容易。Caffe Caffe是一个高效的开源深度学习框架。由表达式,速度和模块化组成。Caffe给出了模型的定义、最优化设置以及预训练的权重,方便立即上手。Caffe能够运行很棒的模型和海量的数据,可以使用Caffe提供的各层类型来定义自己的模型。Neural style Torch实现的神经网络算法。Neural style 是让机器模仿已有画作的绘画风格来把一张图片重新绘制的算法。deepdream Deep Dream是一款图像识别工具。一个原本用来将图片分类的AI,让我们看到不一样的世界~在把一张图片喂入之后,

选择某一层神经网路(Google 的神经网路有10-30 层)进行重复处理的次数和变形的程度,就能获得一张非常后现代的「画作」。Keras 一款Python实现的深度学习库,包括卷积神经网络、递归神经网络等。运行在Theano和TensorFlow之上。Keras是一个极简的、高度模块化的神经网络库,采用Python(Python 2.7-3.5.)开发,能够运行在TensorFlow和Theano任一平台,好项目旨在完成深度学习的快速开发。RocAlphaGo 学生主导的一个独立项目,从新实现了DeepMind在2016 Nature发表的内容,《用深度神经网络和树搜索学习围棋》(Nature 529, 484-489, 28 Jan 2016)。 TensorFlow Models 基于TensorFlow开发的模型。这个库包含了各种机器学习模型在TensorFlow实践。 Neural Doodle 运用深度神经网络将涂鸦变为优雅的艺术品,从照片生成无缝纹理,转变图片风格,进行基于实例的提升,等等…还有更多!(语义风格传递的实现)CNTK 深度学习工具包。来自微软公司的CNTK工具包的效率,“比我们所见过的都要疯狂”。这部分归功于CNTK可借助图形处理单元(GPU)的能力,微软自称是唯一公开“可扩展GPU”功能的公司。(从单机上的1个、延伸至超算上的多个)在

J2EE考试题目及答案

J2简答题 1、简述J2的四层模型。 运行在客户端机器上的客户层组件;运行在J2服务器上的层组件;运行在J2服务器上的业务逻辑层组件;运行在服务器上的企业信息系统层软件 2、什么是对象持久化? 即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关系型的数据库中,当然也可以存储在磁盘文件中、数据文件中等等。 3、简述一下,为什么我们使用它? ( )是一种为了解决面向对象与关系型数据库存在的互不匹配的现象的技术。简单说:是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据中。本质上就是将数据从一种形式转换到另外一种形式。 原因:用它来架起对象和关系型数据库的桥梁,可解决对象层次的映射、对象关系的映射以及对象的持久化问题。 4、简述一下如何使用实现对象持久化的过程(可画图或用伪码描述) 1:创建对象。在这一步中主要为了进行配置文件的装载操作,读取所有的配置文件并进行解析、

2: 创建对象。通过创建好的对象可以创建一个对象的实例,同时是生成对象实例的工厂,他在整个应用中应该是,唯一的。 3:创建对象。对象类似于数据库的连接对象,可以理解为与数据库建立的一个连接,但是他的功能要比中的对象丰富很多。 4:开始一个事务。在中定义一个事务操作的开始,这是使用进行持久化操作必不可少的步骤 5:进行持久化操作。在这个步骤中可以读取或者保存对象。 6:结束事务。在操作完成之后还要进行显式的结束事务的操作。 7:关闭。类似于释放数据库的连接。 5、为什么要实现序列化? 1、序列化以某种存储形式使自定义对象持久化 2、序列化将对象转换为可传输方式从一个地方传递到另一个地方 3、序列化使程序更具维护性 6、比较一下中的()和()方法 1、创建的会和绑定到当前线程,而不会。 2 、创建的线程会在事务回滚或事物提交后自动关闭,而必须手动关闭 7、比较一下中的()和()方法,以及如何保证每次都是从数据库读取而不是在缓存中读? ()和()方法均可以根据指定的实体类和从数据库读取记录,并返回与之对应的实体对象。

开源项目之Android Afinal框架

项目如图: 本文参考网络! Afinal是一个开源的android的orm和ioc应用开发框架,其特点是小巧灵活,代码入侵量少。在android应用开发中,通过Afinal的ioc框架,诸如ui绑定,事件绑定,通过注解可以自动绑定。通过Afinal的orm框架,无需任何配置信息,一行代码就可以对android 的sqlite数据库进行增删改查操作。同时,Afinal内嵌了finalHttp等简单易用的工具,可以轻松的对http就行求情的操作。Afinal的宗旨是简洁,快速。约定大于配置的方式。尽量一行代码完成所有事情。 Afinal框架的各个模块带来了的便捷 1、FinalDB模块:android中的orm框架,一行代码就可以进行增删改查。支持一对多,多对一等查询。 2、FinalActivity模块:android中的ioc框架,完全注解方式就可以进行UI绑定和事件绑定。无需findViewById和setClickListener等。 3、FinalHttp模块:通过httpclient进行封装http数据请求,支持ajax方式加载。 4、FinalBitmap模块:通过FinalBitmap,imageview加载bitmap的时候无需考虑bitmap 加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象。FinalBitmap 可以配置线程加载线程数量,缓存大小,缓存路径,加载显示动画等。FinalBitmap的内存

管理使用lru算法,没有使用弱引用(android2.3以后google已经不建议使用弱引用,android2.3后强行回收软引用和弱引用,详情查看android官方文档),更好的管理bitmap内存。FinalBitmap可以自定义下载器,用来扩展其他协议显示网络图片,比如ftp 等。同时可以自定义bitmap显示器,在imageview显示图片的时候播放动画等(默认是渐变动画显示)。 将Afinal框架带进你的工程的过程 1.下载Afinal的jar包。推荐到GIT上下载(https://https://www.sodocs.net/doc/318061611.html,/yangfuhai/afinal),这里不仅提供了Afinal 的jar包,还包括Afinal的源码以及详细API。 2.将下载后的jar包添加到Android工程里面。相信大家都会,不过也可能会遇到当添加了Afinal包后,继承FinalActivity的Activity会报https://www.sodocs.net/doc/318061611.html,ng.classNotFound这种错误,这种情况你最好将Afinal 包直接拷贝到Android工程的lib文件夹里面。这时你看Android的Dependencies包里面如果有了Afinal包就再次运行APK应该就不会有错了。 3.一个依赖Afinal包的工程还需要添加它所需要的权限:我们在AndroidManifest.xml文件里面添加如下权限: [java]view plaincopy 1. [java]view plaincopy 1. Afinal框架的各个模块的具体使用 FinalDB使用方法: [java]view plaincopy 1.FinalDb db = FinalDb.create(this); 2. https://www.sodocs.net/doc/318061611.html,er user = new User(); 4.

J2EE简答题及答案

1、简述J2EE的四层模型。 运行在客户端机器上的客户层组件 运行在J2EE服务器上的Web层组件 运行在J2EE服务器上的业务逻辑层组件 运行在EIS服务器上的企业信息系统层软件 2、什么是对象持久化? 即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。 3、简述一下ORMAPPING,为什么我们使用它? ORM(Object Relational Mapping)是一种为了解决面向对象与关系型数据库存在的互不匹配的现象的技术。简单说:ORM是通过使用描述对象和数据库之间映射的元数据,将Java程序中的对象自动持久化到关系数据中。本质上就是将数据从一种形式转换到另外一种形式。 原因:用它来架起对象和关系型数据库的桥梁,可解决对象层次的映射、对象关系的映射以及对象的持久化问题。 4、简述一下如何使用Hibernate实现对象持久化的过程(可画图或用伪码描述)STEP 1:创建Configuration对象。在这一步中主要为了进行配置文件的装载操作,读取所有的配置文件并进行解析

STEP 2: 创建SessionFactory对象。通过创建好的Configuration对象可以创建一个sessionFactory对象的实例,同时是生成Session对象实例的工厂,他在整个应用中应该是唯一的。 STEP 3:创建Session对象。 Session对象类似于数据库的连接对象,可以理解为与数据库建立的一个连接,但是他的功能要比JDBC中的Connection对象丰富很多。 STEP 4:开始一个事务。在Java中定义一个事务操作的开始,这是使用Hibernate 进行持久化操作必不可少的步骤 STEP 5:进行持久化操作。在这个步骤中可以读取或者保存Java对象。 STEP 6:结束事务。在操作完成之后还要进行显式的结束事务的操作。 STEP 7:关闭Session。类似于释放数据库的连接。 5、为什么要实现序列化? 1、序列化以某种存储形式使自定义对象持久化 2、序列化将对象转换为可传输方式从一个地方传递到另一个地方 3、序列化使程序更具维护性 6、比较一下sessionFactory中的opensession()和getcurrentsession()方法。 1、getCurrentSession创建的session会和绑定到当前线程,而openSession不会。 2 、getCurrentSession创建的线程会在事务回滚或事物提交后自动关闭,而

java开源框架题目

一、选择题(每题2分,共24 分) 1.不属于Action 接口中定义的字符串常量的是__B _________ 。 A .SUCCESS B .FAILURE C.ERROR D .INPUT 2.在控制器类中一般需要添加相应属性的 ____ A _______ 和____ C ______ A .setter 方法 B .as 方法 C .getter 方法D.is 方法 3.控制器需要在___ B__ ____ 配置文件中进行配置。 A .web.xml B .struts.xml C.struts2.xml D.webwork.xml 4.资源文件的后缀名为_ __D ________ 。 A .txt B.doc C.property D .Properties 5. 事务隔离级别是由谁实现的?(C) A. Java 应用程序 B. Hibernate C. 数据库系统 D. JDBC 驱动程序 6.struts 中数据验证失败时,通过( B )标签显示错误信息。 A. B. C. D. 7. 有这样一个表单元素,想要找到这个hidden 元素,下面哪个是正确的?(B) A. visible C. visible() 8 下面哪一个是用来追加到指定元素的末尾的? A. insertAfter() C. appendTo() 9. 不属于Struts2 的动作类的常量返回值的是 ( A .success B .input C .never D .login B. hidden D. hidden() (C) B. append() D. after() C)

J2ee复习题3

一、填空 2. 在Tomcat服务器中部署Web应用程序时,可以直接将Web程序归档文件W AR存放到tomcat服务的_______________ webapps ________目录中。 3. 在Servlet中用来接收客户表单数据的两个常用方法为____ doGet _________、_____doPost________。 4. 在一个应用程序中不同的页面共享数据时,最好的JSP内置对象为__________application /session _______。 7. JDBC中_________DriverManager/Connection _接口用于连接数据库。 8. Resulset接口的_________next()_方法可以使结果集指针指向下行数据。 二、单选选择 1.在JSP中如果要导入java.io.* 包,应该使用_________A______指令。 A. page B. taglib C. include D. forward 2.如果当前JSP页面出现异常时需要转到一个异常页,需要设置page 指令的__D______属性。 A. Exception B. isErrorPage C. error D. errorPage 3.在MVC模式中,核心内容为____C____。 A. view B. control C. model D. 不确证 8.sesson对象的_______D___方法用于判断是否为开始新会话。 A. begin() B. isNewSessionID() C. invalidate() D. isNew() 9.创建JSP应用程序时,配置文件web.xml应该在程序下的____C______目录中。 A. admin B. servlet C. WEB-INF D. WebRoot 10.下列不属于URL的组件部分为____________D___________。 A. 协议 B. IP地址或域名 C.目录或文件 D. 服务器名称 11.下列表单

,如果单击提交按钮时,表单____________C____________。 A. 没有指定action属性,所以不做提交 B. 使用post方式提交 C. 提交到当前页 D. 不确定 13.JSP中的隐式注释为_______C____________。 A. // 注释内容 B. C. <%--注释内容--%> D. /* 注释内容*/ 14.下列__A______指令定义在JSP编译时包含所需要的资源。 A. include B. page C. taglib D. forward 15.如果编写一个计数器程序,用来记载当前网站的访问量,最好采用JSP中的_____D _对象。 A. page B. session C. request D. application 16.下列可以正确获取当前Web程序物理路径的方法为_____A__________。 A.request.getRealPath(“/”) B.request.getFile(“/”) C. esponse.getRealPath(“/”) D. response.getFile(“/”) 19.如果想在tomcat服务器启动时将jar包加载到内存,且该jar包可以被tomcat服务器上所有的应用使用,应该将该jar包复制到tomcat的________C_____________目录。 A. common B. server C. lib D. server\lib 20.Tomcat服务器的默认端口为________C______________。 A. 8888 B. 8001 C. 8080 D. 80 22.如果在网页上显示一幅图片,下面哪句代码是正确的_____A________________。

总结Java部分的框架和开源项目

文章分类: 下面我将为大家总结一下Java部分的框架和开源项目,让您从总的方面对Java部分框架有一定的了解。 Spring Framework【Java开源JEE框架】 Spring是一个解决了许多在J2EE开发中常见的问题的强大框架。Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是基于使用JavaBean属性的InversionofControl 容器。然而,这仅仅是完整图景中的一部分:Spring在使用IoC容器作为构建完关注所有架构层的完整解决方案方面是独一无二的。 Spring提供了唯一的数据访问抽象,包括简单和有效率的JDBC框架,极大的改进了效率并且减少了可能的错误。Spring的数据访问架构还集成了Hibernate和其他O/Rmapping解决方案。Spring还提供了唯一的事务管理抽象,它能够在各种底层事务管理技术,例如JTA或者JDBC事务提供一个一致的编程模型。 Spring提供了一个用标准Java语言编写的AOP框架,它给POJOs提供了声明式的事务管理和其他企业事务--如果你需要--还能实现你自己的aspects。这个框架足够强大,使得应用程序能够抛开EJB的复杂性,同时享受着和传统EJB相关的关键服务。Spring还提供了可以和IoC容器集成的强大而灵活的MVCWeb框架。【SpringIDE:Eclipse 平台下一个辅助开发插件】 WebWork【Java开源Web开发框架】 WebWork是由OpenSymphony组织开发的,致力于组件化和代码重用的拉出式MVC模式J2EEWeb框架。WebWork目前最新版本是,现在的前身是RickardOberg开发的WebWork,但现在WebWork已经被拆分成了Xwork1和WebWork2两个项目。Xwork简洁、灵活功能强大,它是一个标准的Command模式实现,并且完全从web层脱离出来。 Xwork提供了很多核心功能:前端拦截机(interceptor),运行时表单属性验证,类型转换,强大的表达式语言(OGNL–theObjectGraphNotationLanguage),IoC(InversionofControl倒置控制)容器等。WebWork2建立在Xwork之上,处理HTTP的响应和请求。WebWork2使用ServletDispatcher将HTTP请求的变成Action(业务层Action类),session(会话)application(应用程序)范围的映射,request请求参数映射。 WebWork2支持多视图表示,视图部分可以使用JSP,Velocity,FreeMarker,JasperReports,XML等。在中添加了对AJAX的支持,这支持是构建在DWR与Dojo这两个框架的基础之上.【EclipseWork:用于WebWork 辅助开发的一个Eclipse插件】 Struts【Java开源Web开发框架】 Struts是一个基于SunJ2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,在过去的一年中颇受关注。Struts把Servlet、JSP、自定义标签?和信息资源(messageresources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说Struts是一个非常不错的应用框架。【StrutsIDE:用于Struts辅助开发的一个Eclipse插件】Hibernate【Java开源持久层框架?】 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Eclipse平台下的Hibernate辅助开发工具:【HibernateSynchronizer】【MiddlegenIDE】 Quartz【Java开源调度框架】 Quartz是OpenSymphony开源组织在Jobscheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。Jobs 可以做成标准的Java组件或EJBs。Quartz的最新版本为Quartz1.5.0。 Velocity【Java开源模板引擎】 Velocity是一个基于java的模板引擎(templateengine)。它允许任何人仅仅简单的使用模板语言(templatelanguage)来引用由java代码定义的对象。当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一

JAVA高级面试题集及答案

1 1、BS与CS的联系与区别。 回答:C/S 是Client/Server 的缩写。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、 Sybase、Informix 或SQL Server。客户端需要安装专用的客户端软件。B/S是Brower/Server 的缩写,客户机上只要安装 一个浏览器(Browser),如Netscape Navigator 或Internet Explorer,服务器安装Oracle、Sybase、Informix或SQL Server 等数据库。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端 实现。浏览器通过web Server 同数据库进行数据交互。 C/S 与B/S 区别: 1.硬件环境不同: C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务. B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S 更强的适 应范围, 一般只要有****作系统和浏览器就行 2.对安全要求不同 C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强. 一般高度机密的信息系统采用C/S 结构适宜. 可以通 过B/S 发布部分可公开信息. B/S 建立在广域网之上, 对安全的控制能力相对弱, 可能面向不可知的用户。 3.对程序架构不同 C/S 程序可以更加注重流程, 可以对权限多层次校验, 对系统运行速度可以较少考虑. B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上. 比C/S 有更高的要求B/S 结构的程序架构 是发展的趋势, 从MS 的.Net系列的BizTalk 2000 Exchange 2000等, 全面支持网络的构件搭建的系统. SUN 和IBM推的 JavaBean 构件技术等,使B/S更加成熟. 4.软件重用不同 C/S 程序可以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好. B/S 对的多重结构,要求构件相对独立的功能. 能够相对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石 头桌子 5.系统维护不同 C/S 程序由于整体性, 必须整体考察, 处理出现的问题以及系统升级. 升级难. 可能是再做一个全新的系统 B/S 构件组成,方面构件个别的更换,实现系统的无缝升级. 系统维护开销减到最小.用户从网上自己下载安装就可以实 现升级. 6.处理问题不同 C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与****作系统相关. 应该都是相同的系统

相关主题