这篇文章给大家聊聊关于java6,以及java入门简单代码对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。
Java 6的核心特征和改进
Java功能的核心部分被描述为Java的一个专有组成部分(语言部分和它的核心工具),它对于Java的所有其它方面都起基础性的作用,从用户接口API到各种服务器端库等。下面我将分别谈谈Java SE 6在Java核心特征上的改进。新的Java编译器API允许从Java应用程序内部对Java源程序进行编译。在编译期间,应用程序可以访问库相关信息以及发出警告、错误和其它生成的信息。尽管这个特征似乎不是我常用的,但是我很快就发现了它的一些新用途。例如,我可以使用它来快速构建我所构建的程序的数据存取层。我可以编写代码来生成和编译用于存取应用程序的数据库表的类。最终结果是生成一个JAR文件,这个文件被进一步构建并作为系统的Ant脚本的一部分一同发布。能够从应用程序内部对类进行编译这一实现使得代码生成具有了交互性-我可以以交互方式来修改和构建类。
为了支持Java脚本编程,Java SE 6支持JSR 223,这是一种提供了到Java内部进行存取的脚本语言的框架标准。你可以定位脚本引擎并且在运行时调用它们以运行脚本。该脚本编程API允许你为选择的脚本语言提供Java支持。此外,该Web脚本框架允许脚本代码在任何Servlet容器内生成Web内容。
在调试方面,Java平台调试器(JPDA)也得到进一步增强,开发人员可以针对被锁定的监视对象检测死锁,并同时生成栈跟踪。通过在java.lang.OutOfMemory异常中包含一个完整的堆栈跟踪树并且在堆栈满时生成致命错误记录,Java SE 6进一步加强了内存漏洞分析和探测能力。另外,还增加了一个新的JVM选项以允许你在堆栈满时运行一个脚本。
注意当MBean属性值(包括在复杂类型内部的那些属性值)超过指定的门槛值时,对于JMX监视API的改进方面允许应用程序发送事件以传递指定的阀值。
对于Solaris 10用户来说,Hotspot JVM for Solaris针对Solaris DTrace系统调试工具提供了钩子机制以跟踪和显示内部JVM活动,例如垃圾收集、类加载、线程、锁机制等。我在JavaOne上面得到有关这方面特征的第一个演示程序,并因此为DTrace系统所提供的调试深度所深深吸引。当一个应用程序运行时,DTrace允许你在任何一处停止代码,观看所有已经加载的库(而不仅仅是Java库,也包括所有系统库),并且能够单步跟踪到Solaris内核中(直到硬件层)。Java对于这种高级调试工具的新的支持使该工具非常适合于系统级上的调试。我现在还记得以前在JVM中出现Solaris Signal-8错误时的情况,如果当时有这种支持,那将会节省我大量的分析时间。 Java SE 6中增加的安全方面的功能包括GSS/Kerberos集成,Java认证和针对LDAP认证的授权服务(JAAS),还有一个安全证书请求框架-它允许Java应用程序通过许多协议来请求安全证书。
Java EE 6 还有多久
在大家对Java EE 6望眼欲穿时,从万众瞩目到现在渐渐成为跳票的代名词,Java EE 6离我们还有多远?
对Java开发者来说,最近可以说是一段有趣的时间。被Oracle收购后,Java的保管人Sun Microsystems的业务正在被Oracle一步步合并,而同时一个重要的Java新规范正接近完成。
自从2006年度JavaOne大会上Java EE规范获得批准以来,Java EE 6本应是企业Java的第一次规范更新。今年的JavaOne 2009已经曲终人散,但是我们仍没有看到Java EE 6敲定的消息——甚至连提到现在进展如何的消息都很少。
那么,Java EE 6现在到底到了哪一步呢?为什么没有在JavaOne会议上发布?Java EE 6离我们还有多远?
去年11月,通过发布用于Java EE服务器的GlassFish V3的Prelude版,51CTO.com也曾经报道过Sun曾经透露的一些Java EE 6的草案和新增特性。据我们了解,Sun原本计划在今年的JavaOne 2009上将Java EE 6的具体细节作为重头新闻发布,但结果却不是这样——仅仅是发行了Java EE 6的预览版,作为GlassFish更新发布会的一个小插曲。
“我们本来打算分成两个新闻发布:一个是宣布GlassFish Portfolio的更新,然后第二个新闻发布是Java EE 6的预览。但最后,我们还是决定做一个联合的新闻发布,”Sun公司Java EE/GlassFish总监Paul Hinz告诉我们。
他解释说,Java EE 6规范已经接近完成,大部分的规范处在拟议的最后草案阶段。据Hintz说,最终的Java EE 6计划在今年秋天发布。
但是目前我们还无法搞清楚Oracle的新角色会怎样影响Java的发展。到Hintz的那个时候,数据库巨人可能已经完成收购,也就是说到时Oracle已经开始直接领导Java。虽然Oracle首席执行官Larry Ellison在JavaOne 2009期间表现得非常热情,并且特意宣布他的公司一定会继续热捧Java。
而且Oracle方面拒绝对我们提出的问题做出评论。
不论Oracle的参与会产生什么影响,Java EE的开发者们都必须不断推进和完善规范,因为最终用户和授权用户的要求必须要得到满足。
例如Hintz说,一旦Java EE 6规范在秋季定稿,Java EE的授权用户将需要使用TCK(Technology Compatibility Kit,技术兼容性套件),在应用平台上验证Java EE 6。
不过Hintz担保说,从现有的Java EE 5迁移到Java EE 6将不会有任何特别的挑战。
“Java EE 6是向后兼容Java EE5的,因此,在Java EE 5规范下开发的应用可以不做改变的运行在Java EE 6兼容的应用服务器上,”Hintz说。51CTO.com之前曾就Java EE 5是否能让Java平民化做过分析,现在看来,Java EE 5的优点会被Java EE 6所保留,但向后兼容必然给Java EE带来更高的复杂度。
就Java EE 6的预览版来说,很多人还是看好新的Java EE 6规范,其可扩展性、Web框架的可插拔能力、持久化API(JPA)、JSF等新功能特性让人眼前一亮。开源Java的SOA供应商MuleSource公司创始人兼首席技术官Ross Mason就是这样认为,他觉得迁移到Java EE 6是顺理成章的事情。
“在很长一段时间里,JEE 6.0规范是我所见过最有创新性的事情,”Mason告诉我们。“在Java的简化方面似乎是真正的重点,这显然是受到了来自Java社区之外的其他开源公司的创新性想法的推动。我认为这会是一个伟大的事件,证明Java想要改变,它也可以有效地完成改变。”
但并不是Java社区中的每个人都对Java EE 6预览版感到满意。
SpringSource公司的首席执行官Rod Johnson告诉我们说,他对Java EE 6感到失望,在他看来,Java EE 6没有完成早先的承诺。
之前曾报道过SpringSurceo的新应用服务器不再支持Java EE,尽管对于WAR部署它提供了支持,但EAR部署和其它EE的规范,如EJB等,都不在支持范围之列。
Johnson特别提到,在Java EE 6的开始阶段,引入个人配置(profile)的想法给他留下了非常好的印象,因为这可以让开发者在Java EE中只运行他们需要的部分,使开发过程变得更有效率。
“最初,一些供应商真的希望Java EE能够在比如EJB(Enterprise Java Beans)和JTA(Java Transaction API)这些地方添加上个人配置,但最终发布的Java EE 6预览版,我想没有达到让Java EE更精简更灵活的承诺,”Johnson说,“因此坦率地说,我对最终的结果并不报太大的期望。”
是否Java EE 6成为SUN留给我的最后一个背影呢?但愿我们还有和Java EE 6相聚的那一天。
1e-6在java中什么意思
在 Java中,1e-6表示科学计数法中的 10的负六次方,即 0.000001。这种表示方法可以用来表示极小的浮点数,也可以用于简化代码。
例如,下面的代码使用 1e-6来比较两个浮点数是否相等:
```java
double a= 0.1+ 0.2;
double b= 0.3;
if(Math.abs(a- b)< 1e-6){
System.out.println("a和 b大致相等");
} else{
System.out.println("a和 b不相等");
}
```
在这个例子中,我们首先定义了两个浮点数 `a`和 `b`,它们分别是 0.1加上 0.2得到的结果和 0.3。然后,我们使用 `Math.abs`函数计算它们之差的绝对值,并将其与 1e-6相比较。如果它们之差的绝对值小于 1e-6,我们就认为它们大致相等。
需要注意的是,在使用浮点数进行计算时,由于精度限制,可能会出现一些舍入误差。因此,通常情况下应该避免直接判断浮点数是否相等,而应该判断它们之差的绝对值是否小于某个阈值(例如 1e-6),以确保计算结果的正确性。