【247期门诊集锦】快速驾驭轻量级Java EE企业应用开发

技术门诊是51CTO社区品牌栏目,每周邀请一位客座专家,为广大技术网友解答疑问。从热门技术到前沿知识,从技术答疑到职业规划。每期一个主题,站在最新最热的技术前沿为你引航!

针对Java EE企业应用开发中遇到的典型问题给予解答,欢迎网友积极提问,与专家一起讨论!

查看本期门诊精彩实录:

参与最新技术门诊:运维工程师的生存法则

精选本期网友提问与专家解答,以供网友学习参考。

Q:学了两年的Java,从事J2EE企业级网站开发工作也近一年的时间了,自己想去学习Android,但是有人说,如果去学Android,那么你将会与J2EE方面的知识绝缘,而自己对这方面又不想丢下,不想与它绝缘,一种矛盾油然而生,请李老师您给点建议,谢谢!

A :如果有扎实的Java基本功,Java开发者是可以非常快速都过度到Android开发的。关于如何从Java开发者快速过度到Android开发,可以先了解一下《疯狂Android讲义》,应该对你有帮助。整个Java、Java EE、Android的学习路线,可以参考的学习路线图。Android完全可以和已有的JavaEE技术融合:因为Android只是一个移动客户端,而企业级应用的数据存储、数据计算都放在服务器端完成。Android客户端可以充分发挥“携带方便、上网方便”的优势,作为企业级应用的客户端使用。

Q:李老师您好。我想补充一我的问题,我想问一下关于:1.关于我们使用这些框架,性能优化方面的建议。2.关于代码优化方面,架构优化方面了希望能给指点个方面。十分感谢,期待您的回复。

A:性能优化方面,可以从如下几个层次考虑1.Java编程的代码风格,比如尽量使用String直接量、避免多次重复new实例,使用位移运算代替乘、除运算等等。2.从持久层考虑,优化底层数据库设计,比如建索引、分表存储等,同时对查询语句进行调优。3. 从数据缓存方面着手。采用适当的缓存策略,可以减少与底层数据库的交互次数。4. 采用“静态响应”,服务器可以采用页面缓存技术,将经常被请求的页面做成静态缓存,避免每次请求都需要重新生成响应页面。5. 提升服务器性能,可以考虑使用cluster,增加负载均衡、failover等。

Q:我挺讨厌Hibernate的,Hibernate把程序员和数据库隔离了,长久使用Hibernate的程序员虽然能够快速开发,但是写出来的代码的执 行效率很低,比不上jdbc直接操作mysql,我认为Struts +Spring +jdbc就够了,我面试的很多程序员对数据库一无所知,对于程序优化不知道如何优化,完全是代码堆砌。不知道老师对Hibernate是如何理解的?

A:我十分认同你的观点!早几年我甚至在网络上、其他培训机构过来的学生听到一个观点:有了Hibernate,以后就不需要JDBC了。当时我就极力驳斥这种观点。

但Hibernate也不需要被“深恶痛绝”,关键在于你怎么使用它,因为Hibernate同样存在性能优化。

就像我在讲授Hibernate时,总是打开SQL调试选项,这样就可以实时观察Hibernate为我们做到每一个事情,从而可以进行“针对性的”优化。实际上,Hibernate在性能优化上做了不少努力:比如Hibernate的延迟加载(本质就是动态代理模式)、更新之前的状态检查,Session 级别的一级缓存,SessionFactory级别的二级缓存,如果好好利用这些特性,Hibernate比单纯用JDBC性能要更好(注意这里说的是, 单纯用JDBC。因为JDBC用得好,同样可以实现缓存、延迟加载、更新之前的状态检查 等机制)。

其实看到你的“讨厌”,我有非常深的体会——我甚至劝告初学者开始学java时不要用JBuilder(早期)、Eclipse之类工具,因为它们同样把程序员和真正的Java编程隔离了,导致那些java学习者离开IDE工具之后、甚至换一个IDE工具都会无所适从。

——所以我的建议是,初学者先不要使用IDE工具。等你真正明白你在IDE工具里每点一次菜单、每按一个按钮……IDE工具为了做了什么,为什么要做这 些东西之后,再去使用IDE工具,这时候就可以随意地在各种IDE工具之间自由切换,从而做到:没有IDE工具可以做得很好,有IDE工具可以开发的很 快;也会自己开发一些IDE插件来更大程度地加速开发。

Q:李老师,网站空间,您好!首先,非常感谢您写的书,使我进入了Java EE开发的世界,让我快速的了解了Java EE,并且成功的做出了两个小的项目了,目前有一个稍微大点的项目还正在进行中。我现在就说说我的困惑吧,希望李老师能帮忙解惑,谢谢了。

我的问题分为以下几点:

1。由于项目属于没有人带,完全自己摸索着做的那种,我不知道自己的设计是否规范,是否 安全,效率是否高,因为我的项目数据量也比较小,逻辑关系也不是很复杂,现在,手头正在进行的这个项目,关系有点复杂,隐隐约约的感觉有些吃力。我们的项 目团队就那么几个人,我们都是学生,美国服务器,个人感觉我们开发出来的项目都比较的山寨,做项目的出发点就是把功能做出来,香港虚拟主机,而不管里面的代码有多么的丑陋,多么的糟 糕,多么的没有扩展性、不能重用等问题,这些问题我个人归结于一点就是规范性,我不知道该怎么来规范我的开发,我的小团队。

2.项目中出了问题的解决之道

虽然到目前为止,项目中出现了各种各样的问题,比较幸运的是,目前好像都解决了,这里用 了"好像"这个词,因为有些个问题,其实说解决了也算解决了,但是仔细较真的话,那就是没解决了。个人解决问题的方式一般是:①CSDN发帖子②QQ群询 问③google 再就没其他的途径了,和团队的其他成员也没啥好沟通的,主要是因为跟团队里面的人员沟通都比较的费力,而且感觉更是浪费时间。

鉴于上述几种途径也有比较多的缺陷,所以,这里询问李老师,当碰到了自己不会的问题怎么办,怎么做到有一个指导方向,快速的解决问题。而不是浪费大量的时间去发帖子,等回复。

3.我们目前开发的项目中存在的问题

不知道来年,会不会开出一地的记忆和忧愁。

【247期门诊集锦】快速驾驭轻量级Java EE企业应用开发

相关文章:

你感兴趣的文章:

标签云: