变相怪杰 发表于 2015-1-18 11:08:01

JAVA网站制作之Java功能的优化(上)(转)

Java到底会发战成什么样,让我们拭目以待吧,我始终坚信着java会更好。以上都是俺个人看法,欢迎大家一起交流.功能|优化Java在九十年月中期呈现今后,在博得惊叹的同时,也引来了一些品评。博得的惊叹次要是Java的跨平台的操纵性,即所谓的”WriteOnce,RunAnywhere”.但因为Java的功能和运转效力同C比拟,仍旧有很年夜的差异,从而引来了良多的品评。
关于服务器真个使用程序,因为不年夜触及到界面计划和程序的频仍重启,Java的功能成绩看似不年夜分明,从而一些Java的手艺,如JSP,Servlet,EJB等在服务器端编程方面失掉了很年夜的使用,但实践上,Java的功能成绩在服务器端仍然存在。上面我将分四个方面来会商Java的功能和实行效力和进步Java功能的一些办法。
一.关于功能的基础常识
1.功能的界说
在我们会商如何进步Java的功能之前,我们必要分明“功能“的真正寄义。我们一样平常界说以下五个方面作为评判功能的尺度。
1)运算的功能----哪个算法的实行功能最好
2)内存的分派----程序必要分派几内存,运转时的效力和功能最高。
3)启动的工夫----程序启动必要几工夫。
4)程序的可伸缩性-----程序在用户负载太重的情形下的体现。
5)功能的熟悉------用户如何才干熟悉到程序的功能。
关于分歧的使用程序,对功能的请求也分歧。比方,年夜部分的使用程序在启动时必要较长的工夫,从而对启动工夫的请求有所下降;服务器真个使用程序一般都分派有较年夜的内存空间,以是对内存的请求也有所下降。可是,这并非所这两方面的功能能够被疏忽。其次,算法的功能关于那些把商务逻辑使用到事件性操纵的使用程序来说十分主要。总的来说,对使用程序的请求将决意对各本性能的优先级。
2.如何才干进步JAVA的功能
进步JAVA的功能,一样平常思索以下的四个次要方面:
(1)程序计划的办法和形式
一个优秀的计划能进步程序的功能,这一点不但合用于JAVA,也合用也任何的编程言语。由于它充实使用了各类资本,如内存,CPU,高速缓存,对象缓冲池及多线程,从而计划出高功能和可伸缩性强的体系。
固然,为了进步程序的功能而改动本来的计划是对照坚苦的,可是,程序功能的主要性经常要高于计划上带来的变更。因而,在编程入手下手之前就应当有一个好的计划模子和办法。
(2)JAVA布署的情况。
JAVA布署的情况就是指用来注释和实行JAVA字节码的手艺,一样平常有以下五种。即注释指令手艺(InterpreterTechnology),实时编译的手艺(JustInTimeCompilierTechnology),顺应性优化手艺(AdaptiveOptimizationTechnology),静态优化,提早编译为呆板码的手艺(DynamicOptimization,AheadOfTimeTechnology)和编译为呆板码的手艺(TranslatorTechnology).
这些手艺一样平常都经由过程优化线程模子,调剂堆和栈的巨细来优化JAVA的功能。在思索进步JAVA的功能时,起首要找到影响JAVA功能的瓶颈(BottleNecks),在确认了计划的公道性后,应当调剂JAVA布署的情况,经由过程改动一些参数来进步JAVA使用程序的功能。详细内容见第二节。
(3)JAVA使用程序的完成
当会商使用程序的功能成绩时,年夜多半的程序员城市思索程序的代码,这固然是对的,当更主要的是要找到影响程序功能的瓶颈代码。为了找到这些瓶颈代码,我们一样平常会利用一些帮助的工具,如Jprobe,Optimizit,Vtune和一些剖析的工具如TowerJPerformance等。这些帮助的工具能跟踪使用程序中实行每一个函数或办法所损耗失落的工夫,从而改良程序的功能。
(4)硬件和操纵体系
为了进步JAVA使用程序的功能,而接纳跟快的CPU和更多的内存,并以为这是进步程序功能的独一办法,但现实并不是云云。理论履历和现实证实,只要遭到了使用程序功能的瓶颈,从而接纳得当得办法,如计划形式,布署的情况,操纵体系的调剂,才是最无效的。
3.程序中一般的功能瓶颈。
一切的使用程序都存在功能瓶颈,为了进步使用程序的功能,就要尽量的削减程序的瓶颈。以下是在JAVA程序中常常存在的功能瓶颈。



懂得了这些瓶颈后,就能够有针对性的削减这些瓶颈,从而进步JAVA使用程序的功能
4.进步JAVA程序功能的步骤
为了进步JAVA程序的功能,必要遵守以下的六个步骤。
a)明白对功能的详细请求
在实行一个项目之前,必需要明白该项目关于程序功能的详细请求,如:这个使用程序要撑持5000个并发的用户,而且呼应工夫要在5秒钟以内。但同时也要分明关于功能的请求不该该同对程序的其他请求抵触。
b)懂得以后程序的功能
你应当懂得你的使用程序的功能同项目所请求功能之间的差异。一般的目标是单元工夫内的处置数和呼应工夫,偶然还会对照CPU和内存的使用率。
c)找到程序的功能瓶颈
为了发明程序中的功能瓶颈,一般会利用一些剖析工具,如:TowerJApplicationPerformanceAnalyzer或VTune来观察和剖析程序仓库中各个元素的损耗工夫,从而准确的找到并更正引发功能下降的瓶颈代码,从而进步程序的功能。这些工具还能发明诸如过量的非常处置,渣滓接纳等潜伏的成绩。
d)接纳得当的措施来进步功能
找到了引发程序功能下降的瓶颈代码后,我们就能够用后面先容过的进步功能的四个方面,即计划形式,JAVA代码的完成,布署JAVA的情况和操纵体系来进步使用程序的功能。详细内容将鄙人面的内容中作具体申明。
e)只举行某一方面的修正来进步功能
一次只改动大概引发功能下降的某一方面,然后察看程序的功能是不是有所进步,而不该该一次改动多个方面,由于如许你将不晓得究竟哪一个方面的改动进步了程序的功能,哪一个方面没有,即不克不及晓得程序瓶颈在哪。
f)前往到步骤c,持续作相似的事情,一向到达请求的功能为止。

二.JAVA布署的情况和编译手艺
 开辟JAVA使用程序时,起首把JAVA的源程序编译为与平台有关的字节码。这些字节码就能够被各类基于JVM的手艺所实行。这些手艺次要分为两个年夜类。即基于注释的手艺和基于提早编译为当地码的手艺。其表示图以下:



详细可分为以下的五类:  
a)注释指令手艺
其布局图和实行历程以下:



 JAVA的编译器起首把JAVA源文件编译为字节码。这些字节码关于JAVA假造机(JVM)来说就是呆板的指令码。然后,JAVA的注释器不休的轮回掏出字节码举行注释并实行。
 如许做的长处是能够完成JAVA言语的跨平台,同时天生的字节码也对照松散。JAVA的一些长处,如平安性,静态性都得坚持;但弱点是省天生的字节码没有经由甚么优化,同全体编译好的当地码比拟,速率对照慢。
b)实时编译手艺(JustInTime)
  实时编译手艺是为懂得决指令注释手艺效力对照低,速率对照慢的情形下提出的,其布局图以下所示。



其次要变更是在JAVA程序实行之前,又JIT编译器把JAVA的字节码编译为呆板码。从而在程序运转时间接实行呆板码,而不必对字节码举行注释。同时对代码也举行了部分的优化。
如许做的长处是年夜年夜进步了JAVA程序的功能。同时,因为编译的了局其实不在程序运转间保留,因而也勤俭了存储空间了加载程序的工夫;弱点是因为JIT编译器对一切的代码都想优化,因而也华侈了良多的工夫。
IBM和SUN公司都供应了相干的JIT产物。
c)顺应性优化手艺(AdaptiveOptimizationTechnology)
同JIT手艺比拟,顺应性优化手艺其实不对一切的字节码举行优化。它会跟踪程序运转的成个历程,从而发明必要优化的代码,对代码举行静态的优化。对优化的代码,接纳80/20的战略。从实际上讲,程序运转的工夫越长,代码就越优化。其布局图以下:



其长处是顺应性优化手艺充实使用了程序实行时的信息,刊行程序的功能瓶颈,从而进步程序的功能;其弱点是在举行优化时大概会选择不妥,发而下降了程序的功能。
其次要产物又IBM,SUN的HotSpot.
d)静态优化,提早编译为呆板码的手艺(DynamicOptimization,AheadOfTime)
静态优化手艺充实使用了JAVA源码编译,字节码编译,静态编译和静态编译的手艺。其输出时JAVA的原码或字节码,而输入是经由高度优化的可实行代码和个来静态库的夹杂(Window中是DLL文件,UNIX中是共享库.a.so文件)。其布局以下:



其长处是能年夜年夜进步程序的功能;弱点是损坏了JAVA的可移植性,也对JAVA的平安带来了必定的隐患。
其次要产物是TowerJ3.0.

但是一些大型开发或者是保密型比较高的项目都会用java,原因有2点,一:java是开源的,不怕别人留后门,偷我工具,.net就不一样了,保持微软的一向风格,源代码不公开

谁可相欹 发表于 2015-1-20 14:53:42

关于设计模式的资料,还是向大家推荐banq的网站 http://www.ckuyun.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。

透明 发表于 2015-1-24 14:50:33

是一种将安全性(Security)列为第一优先考虑的语言

第二个灵魂 发表于 2015-1-30 22:57:01

所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。

爱飞 发表于 2015-2-17 07:50:44

应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展

精灵巫婆 发表于 2015-3-5 17:19:34

任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言

若天明 发表于 2015-3-12 10:43:48

http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。

兰色精灵 发表于 2015-3-19 20:35:10

另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
页: [1]
查看完整版本: JAVA网站制作之Java功能的优化(上)(转)