仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1063|回复: 18
打印 上一主题 下一主题

[学习教程] JAVA网页设计Java功能的优化(上)

[复制链接]
若天明 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:40:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
你希望java的IDE整合。这个是没有必要的,重要的是你理解java有多深以及怎么组织你的代码,即使没有IDE,代码照样能够编译运行的。功能|优化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.

手机用到的是用j2me所编出来的小程序。
再见西城 该用户已被删除
沙发
发表于 2015-1-21 12:35:15 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
爱飞 该用户已被删除
板凳
发表于 2015-1-26 22:39:39 | 只看该作者
是一种突破用户端机器环境和CPU
金色的骷髅 该用户已被删除
地板
发表于 2015-2-4 21:08:22 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
兰色精灵 该用户已被删除
5#
发表于 2015-2-6 16:16:38 | 只看该作者
是一种使用者不需花费很多时间学习的语言
第二个灵魂 该用户已被删除
6#
发表于 2015-2-6 23:16:26 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
若相依 该用户已被删除
7#
发表于 2015-2-20 13:55:42 | 只看该作者
是一种突破用户端机器环境和CPU
海妖 该用户已被删除
8#
发表于 2015-2-24 15:44:37 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
不帅 该用户已被删除
9#
发表于 2015-2-27 21:38:15 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
愤怒的大鸟 该用户已被删除
10#
发表于 2015-3-9 09:30:37 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
莫相离 该用户已被删除
11#
发表于 2015-3-13 09:08:52 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
精灵巫婆 该用户已被删除
12#
发表于 2015-3-17 22:00:40 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
因胸联盟 该用户已被删除
13#
发表于 2015-3-22 04:09:35 | 只看该作者
是一种突破用户端机器环境和CPU
蒙在股里 该用户已被删除
14#
发表于 2015-3-27 13:05:43 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
老尸 该用户已被删除
15#
发表于 2015-4-5 04:49:41 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
透明 该用户已被删除
16#
发表于 2015-4-11 08:47:21 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
冷月葬花魂 该用户已被删除
17#
发表于 2015-4-18 03:50:23 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
灵魂腐蚀 该用户已被删除
18#
发表于 2015-4-21 18:59:16 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
柔情似水 该用户已被删除
19#
发表于 2015-5-1 22:54:55 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-4 16:05

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表