小魔女 发表于 2015-1-18 11:32:56

JAVA教程之两条编码原则与Java编译器仓酷云

从一个编程语言的普及程度来将,一个好的IDE是至关中要的,而现在的java的IDE虽然已经很好了,但是和.net网页编程比起来还是稍微差一些的,这是个客观事实。java要想普及的更好。DE是必须加以改进的。我们在写代码时,经常会提到两条准绳:
1、办法要只管短,小气法要分化成小办法;
2、不要反复创造轮子。
我们在夸大这两个准绳的时分,常常只存眷的是代码简便、易保护等便利我们人的要素,实在如许做还能够年夜小气便java编译器优化代码。
Java编译器优化简介:
Java使用程序的编译历程与静态编译言语(比方C或C++)分歧。静态编译器间接把源代码转换成能够间接在方针平台上实行的呆板代码,分歧的硬件平台请求分歧的编译器。Java编译器把Java源代码转换成可移植的JVM字节码。与静态编译器分歧,javac几近不做甚么优化,在静态编译言语中应该由编译器举行的优化事情,在Java中是在程序实行的时分,由运转时实行优化。
立即编译
关于证明观点的完成来讲,注释是符合的,可是初期的JVM因为太慢。下一代JVM利用立即(JIT)编译器来进步实行速率。依照严厉的界说,基于JIT的假造机在实行之前,把一切字节码转换成呆板码,可是以惰性体例来做这项事情:JIT只要在断定某个代码路径将要实行的时分,才编译这个代码路径(因而有了称号“立即编译”)。这个手艺使程序能启动得更快,由于在入手下手实行之前,不必要冗杂的编译阶段。
JIT手艺看起来很有出路,可是它有一些不敷。JIT打消懂得释的包袱(以分外的启动本钱为价值),可是因为多少缘故原由,代码的优化品级仍旧是一样平常般。为了不Java使用程序严峻的启动提早,JIT编译器必需十分敏捷,这意味着它没法把大批工夫花在优化上。以是,初期的JIT编译器在举行内联假定(inliningassumption)方面对照守旧,由于它们不晓得前面大概要装进哪一个类。
固然从手艺上讲,基于JIT的假造机在实行字节码之前,要先编译字节码,可是JIT这个术语一般被用来暗示任何把字节码转换成呆板码的静态编译历程——即便那些可以注释字节码的历程也算。
HotSpot静态编译
HotSpot实行历程组合了编译、功能剖析和静态编译。它没有把一切要实行的字节码转换成呆板码,而是先以注释器的体例运转,只编译“抢手”代码——实行得最频仍的代码。当HotSpot实行时,会汇集功能剖析数据,用来决意哪一个代码段实行得充足频仍,值得编译。只编译实行最频仍的代码有几项功能上风:没有把工夫华侈在编译那些不常常实行的代码上;如许,编译器就能够花更多工夫来优化抢手代码路径,由于它晓得在这下面花的工夫物有所值。并且,经由过程提早编译,编译器能够会见功能剖析数据,并用这些数据来改善优化决议,比方是不是必要内联某个办法挪用。为了让事变变得更庞大,HotSpot供应了两个编译器:客户机编译器和服务器编译器。默许接纳客户机编译器;在启动JVM时,您能够指定-server开关,选择服务器编译器。服务器编译器针对最年夜峰值操纵速率举行了优化,合用于必要临时运转的服务器使用程序。客户机编译器的优化方针,是削减使用程序的启动工夫和内存损耗,优化的庞大水平远远低于服务器编译器,因而必要的编译工夫也更少。
HotSpot服务器编译器可以实行各类样的类。它可以实行很多静态编译器中罕见的尺度优化,比方代码提拔(hoisting)、大众的子表达式扫除、轮回睁开(unrolling)、局限检测扫除、逝世代码扫除、数据流剖析,另有各类在静态编译言语中不有用的优化手艺,比方虚办法挪用的聚合内联。
延续从头编译
HotSpot手艺另外一个风趣的方面是:编译不是一个全有大概全无(all-or-nothing)的命题。在注释代码路径必定次数以后,会把它从头编译成呆板码。可是JVM会持续举行功能剖析,并且假如以为代码路径出格抢手,大概将来的功能剖析数据以为存在分外的优化大概,那末另有大概用更高一级的优化从头编译代码。JVM在一个使用程序的实行过程当中,大概会把不异的字节码从头编译很多次。为了深切懂得编译器做了甚么,能够-XX:+PrintCompilation标记挪用JVM,这个标记会使编译器(客户机或服务器)每次运转的时分打印一条短动静。
栈上(On-stack)交换
HotSpot入手下手的版本编译的时分每次编译一个办法。假如某个办法的累计实行次数凌驾指定的轮回迭代次数(在HotSpot的初版中,是10,000次),那末这个办法就被看成抢手办法,盘算的体例是:为每一个办法联系关系一个计数器,每次实行一个后向分支时,就会递增计数器一次。可是,在办法编译以后,办法挪用并没有切换到编译的版本,必要加入偏重新进进办法,后续挪用才会利用编译的版本。了局就是,在某些情形下,大概永久不会用到编译的版本,比方关于盘算麋集型程序,在这类程序中一切的盘算都是在办法的一次挪用中完成的。分量级办法大概被编译,可是编译的代码永久用不到。
HotSpot比来的版本接纳了称为栈上(on-stack)交换(OSR)的手艺,撑持在轮回过程当中间,从注释实行切换到编译的代码(大概从编译代码的一个版本切换到另外一个版本)。
从java编译、实行优化的道理能够看出,编译器会将“抢手代码块”、“抢手办法”延续优化,以进步功能,再回忆我们经常夸大的两个准绳:
1、只管写小办法。小办法意味着功效单1、重用性高,天然会被良多中央用到,简单酿成“抢手办法”。
2、不反复创造轮子,只管用已存在的轮子。人人共用一个“轮子”,天然就是“抢手”轮子,编译器会晓得这个轮子要好好优化,让他赚的更快。
本文出自:http://www.alisdn.com/wordpress/?p=494

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

透明 发表于 2015-1-19 16:10:51

你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。

若天明 发表于 2015-1-24 13:33:07

在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

兰色精灵 发表于 2015-1-25 18:44:15

那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!

仓酷云 发表于 2015-2-1 16:33:13

Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

谁可相欹 发表于 2015-2-18 11:13:18

一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从

山那边是海 发表于 2015-3-6 04:47:47

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

活着的死人 发表于 2015-3-12 20:45:40

你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。

小女巫 发表于 2015-3-15 05:18:56

如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。

小妖女 发表于 2015-3-17 01:07:50

Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站

只想知道 发表于 2015-3-23 10:07:45

那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!

柔情似水 发表于 2015-3-31 21:17:25

你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。

飘灵儿 发表于 2015-4-2 02:53:59

设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧

不帅 发表于 2015-4-4 13:51:04

Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

灵魂腐蚀 发表于 2015-4-10 01:32:29

另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。

admin 发表于 2015-4-21 18:57:54

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

精灵巫婆 发表于 2015-4-27 11:21:36

是一种使网页(Web Page)产生生动活泼画面的语言

再见西城 发表于 2015-4-29 01:56:10

Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。

若相依 发表于 2015-5-4 13:07:42

吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧

简单生活 发表于 2015-6-19 09:20:34

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