??xml version="1.0" encoding="utf-8" standalone="yes"?>久久91亚洲精品中文字幕奶水,国产精品久久久久久影视,国产黄在线看http://www.aygfsteel.com/jjm194/java_linuxzh-cnThu, 19 Jun 2025 19:59:57 GMTThu, 19 Jun 2025 19:59:57 GMT60JRE与JDK在启动应用服务器中的作用http://www.aygfsteel.com/jjm194/articles/216189.htmljava_linuxjava_linuxSun, 20 Jul 2008 08:44:00 GMThttp://www.aygfsteel.com/jjm194/articles/216189.htmlhttp://www.aygfsteel.com/jjm194/comments/216189.htmlhttp://www.aygfsteel.com/jjm194/articles/216189.html#Feedback0http://www.aygfsteel.com/jjm194/comments/commentRss/216189.htmlhttp://www.aygfsteel.com/jjm194/services/trackbacks/216189.html开始接触Java的时候觉得Java虚拟机很ȝ(ch)Q不明白JRE与JDK的区别是什么?后来搞清楚JRE是个q行环境QJDK是个开发环境?/span>

因此写JavaE序的时候需要JDKQ而运行JavaE序的时候就需要JRE。而JDK里面已经包含?jin)JREQ因此对JAVA_HOME讄为JDK的\径时也可以正常运行JavaE序Q但是JDK比较大包括了(jin)许多与运行无关的内容Q因此运行普通的JavaE序无须安装JDK?/span>

但是用了(jin)Eclipse又有?jin)疑问,Z么这个开发环境JRE可以正常运行呢Q其实在Eclipse中内嵌了(jin)Java~译器,q且与JDK中的javac完全相容Q因此无M用JDK也可以直接编译JavaE序?/span>

学习(fn)J2EE的时候又开始不明白Qؓ(f)什么Tomcat和Apusic用JRE可以启动,W(xu)eblogic用JDK才能启动呢?原因是Tomcat和Apusic 4都已l包括了(jin)一个源代码~译器,而W(xu)eblogic没有包括q个~译器包?/span>

那么Z么需要编译器呢?因ؓ(f)在WEB应用中JSP文g是需要{换成ServletQ这个Servlet文gq需要编译成可以在JRE上执行的class文gQ因此必L供有~译能力的JDKQ将JAVA_HOME讄为JDK的\径就可以?jin)?/span>

那么新出现的Apusic 5.0呢?q个版本Z(jin)使大家可以灵z调整JVM的版本,因此不再提供自带的Java~译器,而是通过用户安装的JDK来完成JSP的编译工作,q个也就是ؓ(f)什么Apusic 5.0必须通过JDK启动的原因?/span>

 



java_linux 2008-07-20 16:44 发表评论
]]>
Java开发者需坚守的十大基本准?/title><link>http://www.aygfsteel.com/jjm194/archive/2008/07/20/216188.html</link><dc:creator>java_linux</dc:creator><author>java_linux</author><pubDate>Sun, 20 Jul 2008 08:43:00 GMT</pubDate><guid>http://www.aygfsteel.com/jjm194/archive/2008/07/20/216188.html</guid><wfw:comment>http://www.aygfsteel.com/jjm194/comments/216188.html</wfw:comment><comments>http://www.aygfsteel.com/jjm194/archive/2008/07/20/216188.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/jjm194/comments/commentRss/216188.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/jjm194/services/trackbacks/216188.html</trackback:ping><description><![CDATA[<p><span style="color: red"><span style="color: #0000ff">  有许多标准和实践准则可适用于Java开发者,但此处要说的Q是每个Java开发者需坚守的基本原则?/span></span></p> <p><span style="color: red"><span style="color: #0000ff">  一、ؓ(f)代码加注释。虽然每个h都知道这点,但有时却不自觉忘?sh)(jin)行,今天?#8220;忘(sh)(jin)”加注释了(jin)吗?虽然注释对程序的功能没什?#8220;贡献”Q但q一D|_(d)比如说两星期之后或者更长,回过头来看看自己的代码,说不定已l记不住它是q什么的?jin)。如果这些代码是你个人的Q那q算是走q了(jin)Q不q的是,当然?jin),大多数时候都是别人的不幸Q很多时候大安是在为公司写代码Q写代码的h也许早已l离开?jin)公司,但别忘?sh)(jin)一句古话,有来有往嘛,Z人,也ؓ(f)我们自己Q请Z的代码加上注释?/span></span></p> <p><span style="color: red"><span style="color: #0000ff">  二、不要让事情复杂化。程序员有时候L对简单问题想出复杂的解决Ҏ(gu)Q比如说Q在只有五个用户的程序中引入EJB、对E序实现?jin)ƈ不需要的框架QframeworkQ,之类的还有属性文件、面向对象解x(chng)案、多U程{等。ؓ(f)什么要q样做呢Q也许我们ƈ不知道是否这样会(x)更好Q但q样做也许可以学C些新东西Q或者让自己更感兴趣一些。如果是不知道ؓ(f)什么这样做Q徏议多hl验丰富的程序员Q如果是Z(jin)个h的目的,ȝ(ch)让自己更专业一炏V?/span></span></p> <p><span style="color: red"><span style="color: #0000ff">  三、始l牢记—?#8220;即是好QLess is moreQƈ不L对的”。代码效率虽然很重要Q但在许多解x(chng)案中Q编写更的代码q不能改善这些代码的效率Q请看下面这个简单的例子Q?/span></span></p> <p><span style="color: red"><span style="color: #0000ff">if(newStatusCode.equals("SD") && (sellOffDate == null ||<br /> todayDate.compareTo(sellOffDate)Q? || (lastUsedDate != null &&<br /> todayDate.compareTo(lastUsedDate)Q?)) ||<br /> (newStatusCode.equals("OBS") && (OBSDate == null ||<br /> todayDate.compareTo(OBSDate)Q?))){<br /> newStatusCode = "NYP"; <br /> }</span></span></p> <p><span style="color: red"><span style="color: #0000ff">  能看明白if条g语句是干什么的吗?能想出来是谁写的q段代码吗?如果把它分成两段独立的if语句Q是不是更容易理解呢Q下面是修改后的代码Q?/span></span></p> <p><span style="color: red"><span style="color: #0000ff">if(newStatusCode.equals("SD") && (sellOffDate == null ||<br /> todayDate.compareTo(sellOffDate)Q? || (lastUsedDate != null &&<br /> todayDate.compareTo(lastUsedDate)Q?))){<br /> newStatusCode = "NYP"; <br /> }else<br /> if(newStatusCode.equals("OBS") && (OBSDate == null ||<br /> todayDate.compareTo(OBSDate)<0))<br /> {<br /> newStatusCode = "NYP"; <br /> }</span></span></p> <p><span style="color: red"><span style="color: #0000ff">  是不是读hҎ(gu)多了(jin)呢,在此只是多加?jin)一个if和两个花括号Q但代码的可L与可理解性就一下子提高?sh)(jin)一大截?/span></span></p> <p><span style="color: red"><span style="color: #0000ff">  四、请不要编码。开发者经常有?#8220;忘记”或忽略掉q点Q因为有些时候开发日E逼得实在太紧。其实,多写一行定义静(rn)态变量的代码能花多少旉呢?</span></span></p> <p><span style="color: red"><span style="color: #0000ff">public class A {<br /> public static final String S_CONSTANT_ABC = "ABC"; <br /> public boolean methodA(String sParam1){<br /> if (A.S_CONSTANT_ABC.equalsIgnoreCase(sParam1)){<br /> return true; <br /> }<br /> return false; <br /> }<br /> }</span></span></p> <p><span style="color: red"><span style="color: #0000ff">  现在Q每ơ需要将“ABC”与其他变量进行比较时Q不必记住实际代码,直接引用A.S_CONSTANT_ABCp?jin),而且在今后需要进行修Ҏ(gu)Q也可在一处修改,不会(x)遍整个源代码逐个修改?jin)?/span></span></p> <p><span style="color: red"><span style="color: #0000ff">  五、不?#8220;创?#8221;自己的框ӞframeworkQ。确切来_(d)有数以千计的各种框架存在Q而且大多数是开源的Q这些框枉是优U的解x(chng)案,可用于日常程序开发中Q我们只需使用q些框架的最新版本就行了(jin)Q至表面上要跟上Ş势吧。被大家qؓ(f)接受的最为明昄一个例子就是Struts?jin),q个开源web框架非常适合用在Zweb的应用程序中。是不是惛_发出自己的Struts呢,q是省点力气吧,回头看看W二条——不要让事情复杂化。另外,如果正在开发的E序只有3个窗口,׃要用Struts?jin),对这U程序来_(d)不需要那么多?#8220;控制”?</span></span></p> <p><span style="color: red"><span style="color: #0000ff">  六、不要用println?qing)字W串q接。通常Z(jin)调试方便Q开发者喜Ƣ在可能的所有地斚w加上System.out.printlnQ也许还?sh)(x)提醒自己回q头来再来删除,但有些时候,l常?x)忘(sh)(jin)删除或者不愿意删除它们。既然用System.out.println是ؓ(f)?jin)测试,那么试完之后,Z么还要留着它们呢,因ؓ(f)在删除时Q很可能?x)删除掉真正有用的代码,所以不能低估System.out.println危害啊,L(fng)下面的代码:(x)</span></span></p> <p><span style="color: red"><span style="color: #0000ff">public class BadCode {<br /> public static void calculationWithPrint(){<br /> double someValue = 0D; <br /> for (int i = 0; i Q?0000; i++) {<br /> System.out.println(someValue = someValue + i); <br /> }<br /> }<br /> public static void calculationWithOutPrint(){<br /> double someValue = 0D; <br /> for (int i = 0; i Q?10000; i++) {<br /> someValue = someValue + i; <br /> }<br /> }<br /> public static void main(String [] n) {<br /> BadCode.calculationWithPrint(); <br /> BadCode.calculationWithOutPrint(); <br /> }<br /> }</span></span></p> <p><span style="color: red"><span style="color: #0000ff">  从测试中可以发现Q方法calculationWithOutPrint()执行用了(jin)0.001204U,作ؓ(f)Ҏ(gu)Q方法calculationWithPrint()执行可是用了(jin)10.52U?/span></span></p> <p><span style="color: red"><span style="color: #0000ff">  要避免浪费CPU旉Q最好的Ҏ(gu)是引入像如下的包装方法:(x)</span></span></p> <p><span style="color: red"><span style="color: #0000ff">public class BadCode {<br /> public static final int DEBUG_MODE = 1; <br /> public static final int PRODUCTION_MODE = 2; <br /> public static void calculationWithPrint(int logMode){<br /> double someValue = 0D; <br /> for (int i = 0; i Q?10000; i++) {<br /> someValue = someValue + i; <br /> myPrintMethod(logMode, someValue); <br /> }<br /> }<br /> public static void myPrintMethod(int logMode, double value) {<br /> if (logMode Q?BadCode.DEBUG_MODE) { return; }<br /> System.out.println(value); <br /> }<br /> public static void main(String [] n) {<br /> BadCode.calculationWithPrint(BadCode.PRODUCTION_MODE); <br /> }<br /> }</span></span></p> <p><span style="color: red"><span style="color: #0000ff">  另外Q字W串q接也是费CPU旉的一个大_(d)L(fng)下面的示例代码:(x)</span></span></p> <p><span style="color: red"><span style="color: #0000ff">public static void concatenateStrings(String startingString) {<br /> for (int i = 0; i Q?20; i++) {<br /> startingString = startingString + startingString; <br /> }<br /> }<br /> public static void concatenateStringsUsingStringBuffer(String startingString) {<br /> StringBuffer sb = new StringBuffer(); <br /> sb.append(startingString); <br /> for (int i = 0; i Q?20; i++) {<br /> sb.append(sb.toString()); <br /> }<br /> }</span></span></p> <p><span style="color: red"><span style="color: #0000ff">  在测试中可发玎ͼ使用StringBuffer的方法只用了(jin)0.01U执行完毕,而用连接的Ҏ(gu)则用?.08U,选择显而易见了(jin)?/span></span></p> <p><span style="color: red"><span style="color: #0000ff">  七、多x(chng)GUIQ用L(fng)面)(j)。再三强调,GUI对商业客h_(d)与程序的功能?qing)效率同{重要,GUI是一个成功程序的最基本部分Q而很多ITl理往往都没注意到GUI的重要性。在现实生活中,许多公司可能Z(jin)节省开支,没有雇用那些有着设计“用户友好”界面丰富l验的网设计者,此时Java开发者只能依赖他们自w的HTML基本功及(qing)在此领域有限的知识,l果Q很多开发出来的E序都是“计算机友?#8221;甚于“用户友好”。很有开发者同时精通Y件开发及(qing)GUI设计Q如果你在公?#8220;不幸”被分配负责程序界面,应该遵守下面三条原则:(x)</span></span></p> <p><span style="color: red"><span style="color: #0000ff">  1?不要再发明一ơ轮子,即不做无用功。现有的E序可能?x)有cM的界面需求?br />   2?先创Z个原型。这是非帔R要一步,用户一般想看到他们用的东西Q而且可以先利用这个原型征求用L(fng)意见Q再慢慢修改成用h要的样子?br />   3?学会(x)换位思考。换句话来说Q就是从用户的角度来审查E序的需求。D例来Ԍ一个汇ȝH口可以跨页或者不跨页Q作Z个Y件开发者,可能?x)們֐于不跨页Q因L(fng)单一些。但是,从用L(fng)角度来看Q可能不希望看到上百行数据都挤在同一上?/span></span></p> <p><span style="color: red"><span style="color: #0000ff">  八、文档需求不放松。每个商业需求都必须记录在案Q这可能听上d童话Q似乎在现实生活中很隑֮现。而我们要做的是,不管开发时间多紧迫Q不最l期限多临近Q对每个商业需求都必须记录在案?/span></span></p> <p><span style="color: red"><span style="color: #0000ff">   ?ji)、单元测试、单元测试、单元测试。关于什么是单元试的最好方法,在此不便l说Q只是强调,单元试一定要完成Q这也是~程中最基本的原则。当然了(jin)Q如果有人帮你做单元试自然是最好,如果没有Q就自己来做吧,当创Z个单元测试计划时Q请遵守以下三条最基本的原则:(x)</span></span></p> <p><span style="color: red"><span style="color: #0000ff">  1?先于~写cM码之前编写单元测试?br />   2?记录单元试中的代码注释?br />   3?试所有执行关键功能的公有Ҏ(gu)Q这里不是指set和getҎ(gu)Q除非它们是以自qҎ(gu)式执行set和getҎ(gu)?/span></span></p> <p><span style="color: red"><span style="color: #0000ff">  十、质量,而不是数量。有些时候因Z品问题、期限紧q、或一些预料之外的事情Q导致常怸能按时下班,但一般而言Q公怸?x)因为雇员经常加班而对之表扬和奖励Q公司只看重高质量的工作。如果遵守了(jin)前九(ji)条原则,你会(x)发现自己写出的代码bug且可维护性高Q无形中质量提高?sh)(jin)一大步?br /> </span></span></p> <img src ="http://www.aygfsteel.com/jjm194/aggbug/216188.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/jjm194/" target="_blank">java_linux</a> 2008-07-20 16:43 <a href="http://www.aygfsteel.com/jjm194/archive/2008/07/20/216188.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">¸</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ƥ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ȫ</a>| <a href="http://" target="_blank">¡</a>| <a href="http://" target="_blank">dz</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">ݰ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">IJ</a>| <a href="http://" target="_blank">ຣʡ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank">½</a>| <a href="http://" target="_blank">ʯ</a>| <a href="http://" target="_blank">ͷ</a>| <a href="http://" target="_blank">ʯɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ϫ</a>| <a href="http://" target="_blank">ػ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">˶</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ͷ</a>| <a href="http://" target="_blank">կ</a>| <a href="http://" target="_blank">γ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>