JAR文件包及jar命令详解

常常在网上看到有人询问:如何把 java 程序编译成 .exe 文件。通常回答只有两种,一种是制作一个可执行的 JAR 文件包,然后就可以像.chm 文档一样双击运行了;而另一种是使用 JET 来进行 编译。但是 JET 是要用钱买的,而且据说 JET 也不是能把所有的 Java 程序都编译成执行文件,性能也要打些折扣。所以,使用制作可执行 JAR 文件包的方法就是最佳选择了,何况它还能保持 Java 的跨平台特性。   下面就来看看什么是 JAR 文件包吧:   1. JAR 文件包   JAR 文件就是 Java Archive File,顾名思意,它的应用是与 Java 息息相关的,是 Java 的一种文档格式。JAR 文件非常类似 ZIP 文件——准确的说,它就是 ZIP 文件,所以叫它文件包。JAR 文件与 ZIP 文件唯一的区别就是在 JAR 文件的内容中,包含了一个 META-INF/MANIFEST.MF 文件,这个文件是在生成 JAR 文件的时候自动创建的。举个例子,如果我们具有如下目录结构的一些文件:   ==   `-- test     `-- Test.class   把它压缩成 ZIP 文件 test.zip,则这个 ZIP 文件的内部目录结构为:   test.zip   `-- test     `-- Test.class   如果我们使用 JDK 的 jar 命令把它打成 JAR 文件包 test.jar,则这个 JAR 文件的内部目录结构为:   test.jar   |-- META-INF   |  `-- MANIFEST.MF   `-- test     `--Test.class   2. 创建可执行的 JAR 文件包   制作一个可执行的 JAR 文件包来发布你的程序是 JAR 文件包最典型的用法。   Java 程序是由若干个 .class 文件组成的。这些 .class 文件必须根据它们所属的包不同而分级分目录存放;运行前需要把所有用到的包的根目录指定给 CLASSPATH 环境变量或者 java 命令的 -cp 参数;运行时还要到控制台下去使用 java 命令来运行,如果需要直接双击运行必须写 Windows 的批处理文件 (.bat) 或者 Linux 的 Shell 程序。因此,许多人说,Java 是一种方便开发者苦了用户的程序设计语言。   其实不然,如果开发者能够制作一个可执行的 JAR 文件包交给用户,那么用户使用起来就方便了。在 Windows 下安装 JRE (Java Runtime Environment) 的时候,安装文件会将 .jar 文件映射给 javaw.exe 打开。那么,对于一个可执行的 JAR 文件包,用户只需要双击它就可以运行程序了,和阅读 .chm 文档一样方便 (.chm 文档默认是由 hh.exe 打开的)。那么,现在的关键,就是如何来创建这个可执行的 JAR 文件包。   创建可执行的 JAR 文件包,需要使用带 cvfm 参数的 jar 命令,同样以上述 test 目录为例,命令如下: jar cvfm test.jar manifest.mf test   这里 test.jar 和 manifest.mf 两个文件,分别是对应的参数 f 和 m,其重头戏在 manifest.mf。因为要创建可执行的 JAR 文件包,光靠指定一个 manifest.mf 文件是不够的,因为 MANIFEST 是 JAR 文件包的特征,可执行的 JAR 文件包和不可执行的 JAR 文件包都包含 MANIFEST。关键在于可执行 JAR 文件包的 MANIFEST,其内容包含了 Main-Class 一项。这在 MANIFEST 中书写格式如下:   Main-Class: 可执行主类全名(包含包名)   例如,假设上例中的 Test.class 是属于 test 包的,而且是可执行的类 (定义了 public static void main(String[]) 方法),那么这个 manifest.mf 可以编辑如下: Main-Class: test.Test <回车>   这个 manifest.mf 可以放在任何位置,也可以是其它的文件名,只需要有 Main-Class: test.Test 一行,且该行以一个回车符结束即可。创建了 manifest.mf 文件之后,我们的目录结构变为:   ==   |-- test   |  `-- Test.class   `-- manifest.mf   这时候,需要到 test 目录的上级目录中去使用 jar 命令来创建 JAR 文件包。也就是在目录树中使用“==”表示的那个目录中,使用如下命令: jar cvfm test.jar manifest.mf test   之后在“==”目录中创建了 test.jar,这个 test.jar 就是执行的 JAR 文件包。运行时只需要使用 java -jar test.jar 命令即可。   需要注意的是,创建的 JAR 文件包中需要包含完整的、与 Java 程序的包结构对应的目录结构,就像上例一样。而 Main-Class 指定的类,也必须是完整的、包含包路径的类名,如上例的 test.Test;而且在没有打成 JAR 文件包之前可以使用 java <类名> 来运行这个类,即在上例中 java test.Test 是可以正确运行的 (当然要在 CLASSPATH 正确的情况下)。   3. jar 命令详解   jar 是随 JDK 安装的,在 JDK 安装目录下的 bin 目录中,Windows 下文件名为 jar.exe,Linux 下文件名为 jar。它的运行需要用到 JDK 安装目录下 lib 目录中的 tools.jar 文件。不过我们除了安装 JDK 什么也不需要做,因为 SUN 已经帮我们做好了。我们甚至不需要将 tools.jar 放到 CLASSPATH 中。   使用不带任何的 jar 命令我们可以看到 jar 命令的用法如下:   jar {ctxu}[vfm0M] [jar-文件] [manifest-文件] [-C 目录] 文件名 ...   其中 {ctxu} 是 jar 命令的子命令,每次 jar 命令只能包含 ctxu 中的一个,它们分别表示:    -c 创建新的 JAR 文件包    -t 列出 JAR 文件包的内容列表    -x 展开 JAR 文件包的指定文件或者所有文件    -u 更新已存在的 JAR 文件包 (添加文件到 JAR 文件包中)      [vfm0M] 中的选项可以任选,也可以不选,它们是 jar 命令的选项参数    -v 生成详细报告并打印到标准输出    -f 指定 JAR 文件名,通常这个参数是必须的    -m 指定需要包含的 MANIFEST 清单文件    -0 只存储,不压缩,这样产生的 JAR 文件包会比不用该参数产生的体积大,但速度更快    -M 不产生所有项的清单(MANIFEST〕文件,此参数会忽略 -m 参数      [jar-文件] 即需要生成、查看、更新或者解开的 JAR 文件包,它是 -f 参数的附属参数      [manifest-文件] 即 MANIFEST 清单文件,它是 -m 参数的附属参数      [-C 目录] 表示转到指定目录下去执行这个 jar 命令的操作。它相当于先使用 cd 命令转该目录下再执行不带 -C 参数的 jar 命令,它只能在创建和更新 JAR 文件包的时候可用。     文件名 ... 指定一个文件/目录列表,这些文件/目录就是要添加到 JAR 文件包中的文件/目录。如果指定了目录,那么 jar 命令打包的时候会自动把该目录中的所有文件和子目录打入包中。   下面举一些例子来说明 jar 命令的用法:   1) jar cf test.jar test   该命令没有执行过程的显示,执行结果是在当前目录生成了 test.jar 文件。如果当前目录已经存在 test.jar,那么该文件将被覆盖。   2) jar cvf test.jar test   该命令与上例中的结果相同,但是由于 v 参数的作用,显示出了打包过程,如下:   标明清单(manifest)   增加:test/(读入= 0) (写出= 0)(存储了 0%)   增加:test/Test.class(读入= 7) (写出= 6)(压缩了 14%)   3) jar cvfM test.jar test   该命令与 2) 结果类似,但在生成的 test.jar 中没有包含 META-INF/MANIFEST 文件,打包过程的信息也略有差别:   增加:test/(读入= 0) (写出= 0)(存储了 0%)   增加:test/Test.class(读入= 7) (写出= 6)(压缩了 14%)   4) jar cvfm test.jar manifest.mf test   运行结果与 2) 相似,显示信息也相同,只是生成 JAR 包中的 META-INF/MANIFEST 内容不同,是包含了 manifest.mf 的内容   5) jar tf test.jar   在 test.jar 已经存在的情况下,可以查看 test.jar 中的内容,如对于 2) 和 3) 生成的 test.jar 分别应该此命令,结果如下;   对于 2)   META-INF/   META-INF/MANIFEST.MF   test/   test/Test.class   对于 3)   test/   test/Test.class   6) jar tvf test.jar   除显示 5) 中显示的内容外,还包括包内文件的详细信息,如:   0 Wed Jun 19 15:39:06 GMT 2002 META-INF/   86 Wed Jun 19 15:39:06 GMT 2002 META-INF/MANIFEST.MF   0 Wed Jun 19 15:33:04 GMT 2002 test/   7 Wed Jun 19 15:33:04 GMT 2002 test/Test.class   7) jar xf test.jar   解开 test.jar 到当前目录,不显示任何信息,对于 2) 生成的 test.jar,解开后的目录结构如下:   ==   |-- META-INF   |  `-- MANIFEST   `-- test     `--Test.class jar xvf test.jar   运行结果与 7) 相同,对于解压过程有详细信息显示,如:   创建:META-INF/   展开:META-INF/MANIFEST.MF   创建:test/   展开:test/Test.class   9) jar uf test.jar manifest.mf   在 test.jar 中添加了文件 manifest.mf,此使用 jar tf 来查看 test.jar 可以发现 test.jar 中比原来多了一个 manifest。这里顺便提一下,如果使用 -m 参数并指定 manifest.mf 文件,那么 manifest.mf 是作为清单文件 MANIFEST 来使用的,它的内容会被添加到 MANIFEST 中;但是,如果作为一般文件添加到 JAR 文件包中,它跟一般文件无异。   10) jar uvf test.jar manifest.mf   与 9) 结果相同,同时有详细信息显示,如:   增加:manifest.mf(读入= 17) (写出= 19)(压缩了 -11%)   4. 关于 JAR 文件包的一些技巧   1) 使用 unzip 来解压 JAR 文件   在介绍 JAR 文件的时候就已经说过了,JAR 文件实际上就是 ZIP 文件,所以可以使用常见的一些解压 ZIP 文件的工具来解压 JAR 文件,如 Windows 下的 WinZip、WinRAR 等和 Linux 下的 unzip 等。使用 WinZip 和 WinRAR 等来解压是因为它们解压比较直观,方便。而使用 unzip,则是因为它解压时可以使用 -d 参数指定目标目录。   在解压一个 JAR 文件的时候是不能使用 jar 的 -C 参数来指定解压的目标的,因为 -C 参数只在创建或者更新包的时候可用。那么需要将文件解压到某个指定目录下的时候就需要先将这具 JAR 文件拷贝到目标目录下,再进行解压,比较麻烦。如果使用 unzip,就不需要这么麻烦了,只需要指定一个 -d 参数即可。如:   unzip test.jar -d dest/   2) 使用 WinZip 或者 WinRAR 等工具创建 JAR 文件   上面提到 JAR 文件就是包含了 META-INF/MANIFEST 的 ZIP 文件,所以,只需要使用 WinZip、WinRAR 等工具创建所需要 ZIP 压缩包,再往这个 ZIP 压缩包中添加一个包含 MANIFEST 文件的 META-INF 目录即可。对于使用 jar 命令的 -m 参数指定清单文件的情况,只需要将这个 MANIFEST 按需要修改即可。   3) 使用 jar 命令创建 ZIP 文件   有些 Linux 下提供了 unzip 命令,但没有 zip 命令,所以需要可以对 ZIP 文件进行解压,即不能创建 ZIP 文件。如要创建一个 ZIP 文件,使用带 -M 参数的 jar 命令即可,因为 -M 参数表示制作 JAR 包的时候不添加 MANIFEST 清单,那么只需要在指定目标 JAR 文件的地方将 .jar 扩展名改为 .zip 扩展名,创建的就是一个不折不扣的 ZIP 文件了,如将上一节的第 3) 个例子略作改动:   jar cvfM test.zip test <淘宝热门商品:
 

0.90 元  

:①般般dē我 开【不】①般般的店

『四钻信誉』官方QB正规秒冲Q币,按元直充0.9元/QQ币

 

278.00 元  

拍趣-拍你喜欢 享受乐趣

3皇冠 大遥控 灿凌RMBOX368(高清DVD/RMVB硬盘播放器) AOK


来源:程序员网

小小豆叮

Java抽取Office、PDF的四件兵器

 很多人问到如何抽取word、excel、pdf等文件,在这里我总结一下抽取word、pdf的几种方法。   1、用jacob.   其实jacob是一个bridage,连接java和com或者win32函数的一个中间件,jacob并不能直接抽取word,excel等文件,需要自己写dll哦,不过已经有为你写好的了,就是jacob的作者一并提供了。   jacob下载:http://www.matrix.org.cn/down_view.asp?id=13   下载了jacob并放到指定的路径之后(dll放到path,jar文件放到classpath),就可以写你自己的抽取程序了,下面是一个例子: import java.io.File; import com.jacob.com.*; import com.jacob.activeX.*; public class FileExtracter{ public static void main(String[] args) { ActiveXComponent app = new ActiveXComponent("Word.Application"); String inFile = "c:\\test.doc"; String tpFile = "c:\\temp.htm"; String otFile = "c:\\temp.xml"; boolean flag = false; try { app.setProperty("Visible", new Variant(false)); Object docs = app.getProperty("document.").toDispatch(); Object doc = Dispatch.invoke(docs,"Open", Dispatch.Method, new Object[]{inFile,new Variant(false), new Variant(true)}, new int[1]).toDispatch(); Dispatch.invoke(doc,"SaveAs", Dispatch.Method, new Object[]{tpFile,new Variant(8)}, new int[1]); Variant f = new Variant(false); Dispatch.call(doc, "Close", f); flag = true; } catch (Exception e) { e.printStackTrace(); } finally { app.invoke("Quit", new Variant[] {}); } } }   2、用apache的poi来抽取word,excel   poi是apache的一个项目,不过就算用poi你可能都觉得很烦,不过不要紧,这里提供了更加简单的一个接口给你:   下载经过封装后的poi包:http://www.matrix.org.cn/down_view.asp?id=14   下载之后,放到你的classpath就可以了,下面是如何使用它的一个例子: import java.io.*; import org.textmining.text.extraction.WordExtractor; /** * <p>Title: pdf extraction</p> * <p>Description: email:chris@matrix.org.cn</p> * <p>Copyright: Matrix Copyright (c) 2003</p> * <p>Company: Matrix.org.cn</p> * @author chris * @version 1.0,who use this example pls remain the declare */ public class PdfExtractor { public PdfExtractor() { } public static void main(String args[]) throws Exception { FileInputStream in = new FileInputStream ("c:\\a.doc"); WordExtractor extractor = new WordExtractor(); String str = extractor.extractText(in); System.out.println("the result length is"+str.length()); System.out.println("the result is"+str); } }   3、pdfbox-用来抽取pdf文件   但是pdfbox对中文支持还不好,先下载pdfbox:http://www.matrix.org.cn/down_view.asp?id=12   下面是一个如何使用pdfbox抽取pdf文件的例子: import org.pdfbox.pdmodel.PDdocument. import org.pdfbox.pdfparser.PDFParser; import java.io.*; import org.pdfbox.util.PDFTextStripper; import java.util.Date; /** * <p>Title: pdf extraction</p> * <p>Description: email:chris@matrix.org.cn</p> * <p>Copyright: Matrix Copyright (c) 2003</p> * <p>Company: Matrix.org.cn</p> * @author chris * @version 1.0,who use this example pls remain the declare */ public class PdfExtracter{ public PdfExtracter(){ } public String GetTextFromPdf(String filename) throws Exception { String temp=null; PDdocument.nbsppdfdocument.null; FileInputStream is=new FileInputStream(filename); PDFParser parser = new PDFParser( is ); parser.parse(); pdfdocument.nbsp= parser.getPDdocument.); ByteArrayOutputStream out = new ByteArrayOutputStream(); OutputStreamWriter writer = new OutputStreamWriter( out ); PDFTextStripper stripper = new PDFTextStripper(); stripper.writeText(pdfdocument.getdocument.), writer ); writer.close(); byte[] contents = out.toByteArray(); String ts=new String(contents); System.out.println("the string length is"+contents.length+"\n"); return ts; } public static void main(String args[]) { PdfExtracter pf=new PdfExtracter(); PDdocument.nbsppdfdocument.nbsp= null; try{ String ts=pf.GetTextFromPdf("c:\\a.pdf"); System.out.println(ts); } catch(Exception e) { e.printStackTrace(); } } }   4、抽取支持中文的pdf文件-xpdf   xpdf是一个开源项目,我们可以调用他的本地方法来实现抽取中文pdf文件。   下载xpdf函数包:http://www.matrix.org.cn/down_view.asp?id=15   同时需要下载支持中文的补丁包:http://www.matrix.org.cn/down_view.asp?id=16   按照readme放好中文的patch,就可以开始写调用本地方法的java程序了   下面是一个如何调用的例子: import java.io.*; /** * <p>Title: pdf extraction</p> * <p>Description: email:chris@matrix.org.cn</p> * <p>Copyright: Matrix Copyright (c) 2003</p> * <p>Company: Matrix.org.cn</p> * @author chris * @version 1.0,who use this example pls remain the declare */ public class PdfWin { public PdfWin() { } public static void main(String args[]) throws Exception { String PATH_TO_XPDF="C:\\Program Files\\xpdf\\pdftotext.exe"; String filename="c:\\a.pdf"; String[] cmd = new String[] { PATH_TO_XPDF, "-enc", "UTF-8", "-q", filename, "-"}; Process p = Runtime.getRuntime().exec(cmd); BufferedInputStream bis = new BufferedInputStream(p.getInputStream()); InputStreamReader reader = new InputStreamReader(bis, "UTF-8"); StringWriter out = new StringWriter(); char [] buf = new char[10000]; int len; while((len = reader.read(buf))>= 0) { //out.write(buf, 0, len); System.out.println("the length is"+len); } reader.close(); String ts=new String(buf); System.out.println("the str is"+ts); } } <淘宝热门商品:
 

18.50 元 

出口韩国 棉质弹性不透内搭显瘦踩脚裤/打底裤

 

198元 

深深魅惑-*减肥*美容*收藏有惊喜:-)购物惊喜不断……


来源:程序员网

小小豆叮

JDBC Error establishing socket 我的心得

很多朋友碰到过: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket. at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source) at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source) at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source) at com.microsoft.jdbc.sqlserver.tds.TDSConnection.(Unknown Source) at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source) at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source) at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source) at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at ldg.Quotation.InitDataConn(Quotation.java:374) at ldg.Quotation.jbInit(Quotation.java:367) at ldg.Quotation.(Quotation.java:147) at ldg.spmk.jButton1_actionPerformed(spmk.java:76) at ldg.spmk_jButton1_actionAdapter.actionPerformed(spmk.java:101) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) 这类错误 我也碰到同样问题,打了sql server SP3包后仍然不起作用,后来发现Connection con=DriverManager.getConnection("jdbc:microsoft:sqlserver://server_name:1433","userName","password"); 其中server_name用的是局域网IP,通过公网不能访问,我尝试改成公网可以访问的静态IP,当然数据库就装在这机器上,就可以了。 蒯正建 kennykuai@tom.com 欢迎分享讨论 <淘宝热门商品:
 

24.00 元  

輝縂、QQ业務连鎖店

官方秒开QQ会员QQ紫钻QQ黄钻QQ红钻QQ蓝钻QQ粉钻8元/月

 

 

『女人天生是妖精』店内商品均为现货 拍下后可直接留言修改运费


来源:程序员网

小小豆叮

Java支持者BEA放眼替代语言 处初步阶段

CNET科技资讯网8月8日国际报道 长年来致力于推广Java程序设计语言的BEA Systems 公司,已打算在即将推出的产品中,支持别的描述语言(scripting languages )。 BEA 产品营销副总裁Bill Roth 说,这是配合该公司长期计划推出的一项措施。他说,BEA 考虑提供各种方式,让熟悉描述语言的程序开发人员为BEA 的服务器软件打造应用程序。 这项计划仍处于初步阶段,目的在利用描述语言大受欢迎的人气。描述语言广泛运用于网络应用程序,通常被视为比Java更容易使用。 Roth说:“目标在于符合开发人员的实际需要,显然打造应用程序的新方法已暴增。Java和J2EE(程序设计模式)仍很重要,但程序设计方面的创新也不容否认。” 他指出,BEA 已在自家的WebLogic应用程序服务器里有限度地纳入对Jython语言的支持,另外也在评估是否支持Cold Fusion 标示语言。 如同BEA 的Workshop开发工具,WebLogic与AquaLogic 产品线也是以Java和网络服务(Web services)标准为中心。 但该公司曾表示,有意支持Java平台企业版(Java Platform Enterprise Edition)以外的程序设计模式,或称架构(frameworks)。Java Platform Enterprise Edition 用于建置服务器程序。今年6 月,该公司表示,将在应用程序服务器与开发工具中,支持两款开放源代码的Java开发架构,称为Spring和Struts。 BEA 不是唯一一家拥抱描述语言的商用软件制造商。微软公司也已聘请Jython语言的作者,且正打造一款供撰写.Net 应用程序使用的版本,称为IronPython.IBM今年6 月发布ZendCore for IBM,此工具允许P 惠普开发者更容易打造数据库与网络服务应用程序。甲骨文公司(Oracle)也与Zend建立类似的伙伴关系。 同时,所谓的LAMP堆叠也成为愈来愈引人注意的Java和.Net 替代品。例如,辉瑞药厂就以LAMP新创公司ActiveGrid的工具和应用程序服务器取代一些WebLogic应用程序。 LAMP是一种人气渐旺的开源开发元件组合,内含Linux 、Apache、MySQL 以及描述语言 PHP、Python和Perl。 <淘宝热门商品:
 

198.00 元 

BENEFIT特配丰胸组合 天然丰胸食品_海量顾客反馈

 

3.50 元  

联达电子音响材料网淘宝分铺

【联达电子】镀银优质九脚电子管管座


来源:程序员网

小小豆叮

如何才算掌握Java

时常看到一些人说掌握了Java,但是让他们用Java做一个实际的项目可能又困难重重,在这里,笔者根据自己的一点理解斗胆提出自己的一些对掌握Java这个说法的标准,当然对于新手,也可以提供一个需要学习哪些内容的参考。另外这个标准仅限于J2SE部分,J2EE部分的内容有时间再另说。   1、语法:必须比较熟悉,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误并且知道任何修正。   2、命令:必须熟悉JDK带的一些常用命令及其常用选项,命令至少需要熟悉:appletviewer、HtmlConverter、jar、java、javac、javadoc、javap、javaw、native2ascii、serialver,如果这些命令你没有全部使用过,那么你对java实际上还很不了解。   3、工具:必须至少熟练使用一种IDE的开发工具,例如Eclipse、Netbeans、JBuilder、Jdeveloper、IDEA、JCreator或者Workshop,包括进行工程管理、常用选项的设置、插件的安装配置以及进行调试。   4、API:Java的核心API是非常庞大的,但是有一些内容笔者认为是必须熟悉的,否则不可能熟练的运用Java,包括:    1)、java.lang包下的80%以上的类的功能的灵活运用。    2)、java.util包下的80%以上的类的灵活运用,特别是集合类体系、规则表达式、zip、以及时间、随机数、属性、资源和Timer。    3)、java.io包下的60%以上的类的使用,理解IO体系的基于管道模型的设计思路以及常用IO类的特性和使用场合。    4)、java.math包下的100%的内容。    5)、java.net包下的60%以上的内容,对各个类的功能比较熟悉。    6)、java.text包下的60%以上的内容,特别是各种格式化类。    7)、熟练运用JDBC。    8)、java.security包下40%以上的内容,如果对于安全没有接触的话根本就不可能掌握java。    9)、AWT的基本内容,包括各种组件事件、监听器、布局管理器、常用组件、打印。    10)、Swing的基本内容,和AWT的要求类似。    11)、XML处理,熟悉SAX、DOM以及JDOM的优缺点并且能够使用其中的一种完成XML的解析及内容处理。   5、测试:必须熟悉使用junit编写测试用例完成代码的自动测试。   6、管理:必须熟悉使用ant完成工程管理的常用任务,例如工程编译、生成javadoc、生成jar、版本控制、自动测试。   7、排错:应该可以根据异常信息比较快速的定位问题的原因和大致位置。   8、思想:必须掌握OOP的主要要求,这样使用Java开发的系统才能是真正的Java系统。   9、规范:编写的代码必须符合流行的编码规范,例如类名首字母大写,成员和方法名首字母小写,方法名的第一个单词一般是动词,包名全部小写等,这样程序的可读性才比较好。   欢迎大家发表看法,丢臭鸡蛋也没有关系。^_^ <淘宝热门商品:
 

¥:338.00 

【澳钻/Swarovski/手机钻/美甲钻/婚沙礼服钻】专卖店

【五钻信誉】Swarovski々豪华水晶甲々1200颗338元[包快递]

 

136.00 元  

达人公社 专柜正品 纽巴伦 newbalance 匡威 crocs折扣 店

正品 日版纽巴伦new balance 型号:TK02 深灰黑


来源:程序员网

小小豆叮

IBM公司已经参与开放源代码Java项目Harmony

据IBM公司的一位官员表示,IBM公司已经开始参与开放源代码Java项目Harmony,并打算主动向这一项目捐赠代码。   据IBM公司先进技术部门的副总裁史密斯表示,IBM公司在上周已经派一名员工与被提议的这一开放源 代码项目Harmony合作。据史密斯表示,IBM公司目前的参与仅限于在设计方面的思想,但公司很可能会向这一项目捐赠代码。他表示,我坚信在未来的这一项目中你们会看到有我们的代码,但目前我们的参与仅限于其中的一些理念与设计。我们对这一项目有一些想法,希望能够被融入整个Harmony策略中。   Harmony项目是在今年5月份成立的旨在开发一个开放源代码版的基于Java平台的标准版(Java SE),这一软件是在台式机上运行Java软件所需要的。据史密斯表示,在这一项目的方向和目标更清楚之前,IBM公司将选择等待。他表示,我们确实的想看到这一社区计划开始“启动”,而他们仍然在设计他们所希望发布的功能,我们不想中断这一过程。   IBM公司长期以来就一直表明,它希望看到开放源代码版Java。史密斯在去年发表的致Sun公司副总裁金格尔的公开信中就曾建议Sun公司将Java开放源代码化。据Sun公司的官员表示,Sun公司没有将Java开放源代码化的原因是:它将会破坏这一标准,引起兼容性问题。然而,Sun公司已经改变了它的许可政策,简化了查看Java SE源代码、捐赠代码的过程。尽管Sun公司和IBM公司的员工已经表达了他们对这一开放源代码项目的支持,然而,直到现在,这两家公司都还没有正式加入这一开放源代码项目。但在开发人员社区中却流传着IBM公司将加盟Harmony项目、并很可能会捐赠大量代码的传言。   IBM公司已经拥有了它自己的Java虚拟机━━Java SE的组件之一,并在Java领域积累了大量的专用技术。在今年5月份, IBM公司收购了Harmony项目的捐赠者Gluecode公司━━一家开放源代码Java应用服务器软件开发商。 <淘宝热门商品:
 

205.00 元  

东菱小熊贝尔莱德艾美特(面包机酸奶机挂烫机电暖器礼品小家电)

双皇冠,产地代理『艾美特暖风机HP2009』2000W功率,浴居两用

 

55.00 元 

年底冲钻免邮费!热销包包 !韩版单肩包!销量过千


来源:程序员网

小小豆叮

新的Java业务集成标准将会改变Java

Sun微系统公司和一些有规模的提供商近来认可了Java业务集成1.0规范,规范的集成可能马上成为企业Java开发者遵照的标准。   在JavaOne大会现场挤满了听众,Sun公司的工程师和JBI 1.0(即JSR 208)标准的工程师Ron Ten-Hove和Peter Walker描述了JBI作为基本的标准来集成和作为授权面向服务结构的关键。Ten-Hove说道:“行业已经解决了缩放点对点集成的问题。”   JBI所要解决的这个,提供了一个普遍的消息基础构造,使得业务组成和服务的通信不用去考虑它们下面的平台和通讯协议。   JBI扮演了类似容器的容器,允许多种服务引擎和绑定组件来嵌入和使用公共消息总线通信。事务过程执行语言服务,扩展样式表转换语言转换器和基于J2EE的Web服务,是pluggable的服务引擎的例子。另一方面,绑定组件被作为JBI环境和像SOAP AS2,ebXML和电子数据交换(EDI)这样的不同协议之间的转换器。   两种组件通信类型都有它自己使用的Web服务描述语言2.0-适应接口,这是描述消息格式,消息的转换样式和服务端点。然而,这些嵌入的组件从不直接的相互传递消息,取而代之地,他们使用一种规格化的消息路由来建立通信,这能够很好的兼顾中介消息和服务间的转换。   位于加州Palo Alto的Tibco软件公司的产品市场资深主管Robert Meyer说:“JBI是关于超越点对点或者所有权综合和单片电路应用服务器堆栈。”   至少14家供应上宣布,他们将支持JBI标准,包括Tibco,都将在2006上半年,发布一个JBI服务容器,这是公司基于JBI服务主动地开发的平台项目Matrix的一部分。   Meyer说:“在他们对JBI的支持中,工业展现了巨大的因素。”支持标准的是像SAP AG和Oracle这样的应用供应商,像Tibco和Sonic软件公司这样的系统提供商和像SUN公司这样的应用服务器提供商。   JBI需要SOA   当供应商联盟是强烈的推行JBI的时候,最终用户仅仅刚刚获得它周边的介绍。   Barry Egbert,一个开发者说:“在这个时候,我们仅仅作点对点的消息传输,” Egbert服务于全美后备军人事务部。负责接收来自于全美范围内存储于中央健康数据库中的医院、药店的临床数据。Egbert声称,拥有“hub-and-spoke”综合模式的部门是有充足的时间的。他的客户端开始认为传输到一个面向服务结构(SOA),这是将JBI布置到他的“雷达”上。   “SOA是一个系统架构机制的基础,它将系统提供商和客户分开来。” Ten-Hove说道。JBI提供了一个标准容器来允许提供商和用户之间来容易的相互沟通。他说:“我们希望创建一个嵌入式生态系统平台提供商,这将允许用户为协调应用来平 <淘宝热门商品:
 

145.00 元 

八心八箭瑞士钻石六爪旁镶钻经典钻戒指

 

78.00 元 

印疤修复液 消除深浅痘印 改善凹凸疤痕


来源:程序员网

小小豆叮

Java 10年回顾:世界各地开发高手谈Java

到今年五月,Java已经走过了它辉煌的十年。我们邀请了世界各地的开发高手一同回顾Java语言发展的第一个十年,评析她今天所处的位置并预测其今后的发展趋势。与会者(包括知名IT企业Sun、IBM、BEA及Borland等)反映各异,但有一点是共同的——Java的地位将一如既往举足轻重。   一、简介   2005年5月标记着自从Sun第一个引入Java技术以来经历了整整10个年头。在过去的10年中,Java语言已经变为一个平台,一个社团和一个生态系统。在这些环境下,软件用户、开源工程以及个体开发者等茁壮成长。今天,大约有四百五十万Java开发者和大约1.4亿台设备上使用着Java。   我们不空谈Java的成功故事。代替的是通过分发调查问卷(每发展一年提问一个问题)来搜集个人的Java使用经验,这些人大都是精于Java技术的开发者。回答者包括各个层面的人,从咨询师、作家到BEA、IBM、Sun等大公司的CTO和资深技术人员。   下面是一些我们收到的令人瞠目的回答。   1. 你是如何开始使用Java编程的?   Java吸引了每个人的注意,从程序开发人员到……   "当Java还称为Oak的时候我就用它进行编程,大约是在1993年的下半年或者是1994年的上半年。当时我在Sun Labs率领一个研究小组。一旦我们使用Java开发,我们就注意到使用Java的最大优点是,它能以一种合理的安全的方式从一个虚拟机迁移到另一台虚拟机。",这是Jim Waldo(SunLabs的杰出工程师)的回答。   Rod Smith,作为IBM软件开发小组中处理突发技术的副主席,写道:"我们看到了,Java平台是一种足够好的技术,它具有在计算机工业界成为一支重大的独成系列的力量的潜力。我们认为,我们最好要赶上这班时代列车并采纳Sun的Java技术而不再依赖于以前的模式-自己开发每一件东西。"   Ed Cobb,BEA Systems公司CTO办公室架构标准的副主席,写道:"我们可以选择其它主流的面向对象语言,但是Java提供了一种更好的组合特点使它适合于团队环境下的大规模开发。"   "在过去十年中的大部分时间里,我受雇于Sun。因此,我不得不说,Java"突然来到"我的身边。如果不是这一突然性的到来,我们也会需要另外一种似Java的东西来叩开业界中正迅速发展的网络计算环境的大门。"-Rob Gingell,Cassatt Corporation的执行副主席和CTO。   ...对那些勤奋的计算机系的大学生们...   Michael Pilone,作为Blueprint Technologies的资深软件工程师,他的回答是:"当时我盘算着我将来得找一份体面的工作,所以虽然我在大学中所学全部是C++,但是我还是另外自学了Java。"   "在我上硕士期间,我的指导教授让我用Java工作,结果我用Java 1.0 beta版完成了我所有的功课。"-Raghu Donepudi,环球计算机公司的系统开发领导者。   ...对那些热衷于编程的狂热者...   "我一毕业即用Java开始工作,我惊喜于Java的WORA的前景和Applets。"-Jack Herrington,作为Code Generation in Action (Manning)的作者和Code Generation Network的编辑。   "我甚至在1.0版本之前就开始学习Java了,因为其开发目标是作为微软工具(VB和Visual C++)与Pascal语言的可选替代者",Laurent Ploix写道,他是SunGard-Finance公司的工程总管和技术架构师。   "在1997年,我带着一本手册作为度假读物,在海滩度假的日子里,我沉浸在Java的优美之中。我转向了Java,并宣布C++是一种传统的语言,并发誓一旦选择了Java,永不回头。"-Vlad Patryshev,Borland公司Java Business Unit的前任R&D工程师。   2.Java宣称的"编写一次,到处运行"效果怎么样(WORA)?一直以来,WORA的重要性改变了多少?   "Java虚拟机,至少在概念上,是Java背后最强有力的思想。它的确实现了它许诺的轻便性。"-Bruce Tate,J2Life, LLC(一家Java技术咨询公司)的主席。   "应用服务器和J2EE应用程序可以在多种平台上良好地迁移。我认为在客户端上实现WORA还是相当值得怀疑的,也许永远不会实现。"-Michael Pilone   "它对我简直是一个不可捉摸的平台。"-Vlad Patryshev   "Java的早期成功根本上在于WORA。与其它可选择工具相比,Java带给了(并将进一步带给)SI(系统集成商),ISV(独立软件开发商)和软件工程师们一个根本不同的经济环境。"-Rod Smith   "Java在WORA方面的性能:a)比任何它之前的工具要好;b)就目前而言,与另外一些可选工具相比仍然要好得多;c)将作为Java价值的一个关键部分继续保持下去。"-Rob Gingell   "WORA每次都带给我极大的便利。我总是在Windows平台上进行我的Java开发;但是,我总是毫不费劲地把这些代码发布到Solaris 或者Linux 环境中去。"-Eric Bruno,一个独立的咨询师,擅长于软件架构,企业Java和C++开发。   "你可以把字节代码转换成MSIL(MS中间语言),而且你可以在J#中运行Java程序。这使我们可以针对我们产品的Java和.NET环境只保留一份代码即可。"-Michael R. Smialek,Knowledge Dynamics的主席和CEO   "我经常跨Windows,Linux和Sun Solaris开发,测试和发布Java代码,而仅需对XML配置文件作较少的改动。但是,随着面向服务的结构的出现,WORA的重要性已经减弱了。"-Kyle Gabhart,作家和独立咨询师   "象Perl,Ruby和Python等语言一样轻便。"-Jack Herrington   "一些人认为,由于通用操作系统的数目的下降,WORA将变得不再如以前那么重要。事实上,即使只有两种合理的可能的目标平台存在,WORA就一直是重要的。"-Ed Cobb   二、客户端Java及开发工具选择   3.你用Java编写过多少代码?估计你将来的工作有多少会用Java实现?   几乎所的的回答者声称Java是他们主要的产品编码工具,大多数人选择他们的Java使用率超过70%。没有人认为他们下一步的Java开发使用率会降低。   "去年,我们利用Java 技术开发出了800多个商业产品。几乎我们所有的中间件都依赖于Java运行时刻库。"-IBM的Rod Smith   "在我们的顾客中,我们仍看到具有可以预料的潜在需求的大量C/C++功能第一型的应用程序。他们经常愿意用Java进行开发,而Java虚拟机技术目前正发展到正好能够处理这些类型系统的时候。   在Web应用程序开发中,我想,当人们的应用程序变得越来越大且越复杂时,我们将看到针对动态类型语言会出现一点后推力作用。他们将经受运行时刻类型异常--事实上,他们早已认识到,如果采用象Java一样的强类型语言的话,这是可以避免的。"-BEA公司的Ed Cobb   4.你用Java开发桌面应用和服务器应用的比例为多少?如果你开发过桌面应用程序,你更喜欢用SWT还是Swing,为什么?   Bruce Tate对这一问题的回答总结了所有其他人的观点:"服务器端Java正是它应有的位置。"   至于,客户端Java开发,众说纷纭...   "Swing太复杂,太不可预测,太难学。SWT则好一些,但一般而言,Java在用户接口设计上很不成功。"-Tate,《Better, Faster, Lighter Java》和《Bitter Java》的作者   "我认为SWT有更好的方法,它链接到本地lib库文件以达到加快速度和一致性的目的,但是我并不喜欢这些API,因为它们暴露出太多的老式的编码技术。相比之下,Swing有一个更好些的API,但是其中充满错误、性能低下且设计糟糕。"-Michael Pilone   "我更喜欢SWT...它比Swing更具本地化,Swing而可以说只是粗略地实现了本地化。"-Ed Cobb   "我写Swing应用程序,然后使用Java Web Start来进行发布。我还没有出卖过我的SWT型程序,因为它仅有有限的跨平台支持并缺乏可靠的MVC设计。"-Kyle Gabhart   5.你使用的Java开发环境是什么?   很明显,当前流行的Eclipse框架和集成开发环境是大多数对这一问题的回答,因为其是Windows和Linux平台的主流环境。只有另外少数的回答者指定了其它几个选择:   "我选择的平台是WinXP Pro。在安装了Cygwin和另外几个开发工具后,你就可以得到一个具有硬件支持的非常有用的系统了。"-Michael Pilone   "我特别喜欢J2SE 5。说到IDE,我更喜欢Jbuilder,其次是IDEA。IDEA中有一些巧妙的实现,但是良好的经典的Jbuilder具有我需要的任何东西。"-Vlad Patryshev   "我一直使用emacs开发而用println进行调试。最近我在使用NetBeans,已惊奇于它给我带来的巨大帮助。"-Jim Waldo   "请不要使用EJB!"-Laurent Ploix   "Visual Café。"-Smialek   "在必要的时候,我都使用vi进行开发。"-Kyle Gabhart 三、开源,JCP和对Java的希望列举   6.JCP和开源社群谁在Java更新上的贡献更大?   "到目前为止,应该说是开源的贡献更大。而JCP在进行实际的开发实践之前,推崇标准化的作用。EJB,日志以及持久性一直是JCP中的灾难。实际上JCP在抛弃着Java的根基。很难的问题在拐弯抹角变得易于解决,而容易的问题反而在变得越来越难于解决了。"-Bruce Tate   "开放源码的执行领导着开发过程,而JCP仅仅是定义了一些标准。"-Laurent Ploix   "如果说纯粹的革新,我将选择开源。当工程中存在漏洞需要补全时,开源是能够迅速得到响应的。而JCP目前是一种太慢的方式,以至于根本跟不上工业发展的步伐。"-Michael Pilone   "多数的革新经历了JCP模式。但是,在过去的几年中,我们看到了在开源模式中的活动不断增加的迹象。"-Rod Smith (IBM)   "为使得开源运动进行下去,JCP值得广泛的信任,它对于Java生态系统的发展起到提供一个群落中心的作用。任何一些非JCP标准的开源工程已经探索了各式各样的思想-一些是糟糕的,一些却取得了令人惊喜的成绩。JCP可以说是一场伟大的创新运动的火车头。"-Ed Cobb (BEA)   "JCP本身仅仅是定义了一些标准及相应的说明书,这在已有的工程实现中被得到支持。作为编程者,我们不想根据一段现成的Java编码来指导我们编程,而要根据一套成熟的说明书进行开发。真正有用的编程最开始往往是零碎的代码片断,经常经历一个先有代码然后有规范的说明书的过程。"-Rob Gingell   "我找到了开源的主动性,特别是从Apache到当前最具创新性的有用的软件中找到的。"-Eric Bruno   7.Sun应该开放Java的源代码吗?   你知道这个问题肯定会出现在问卷之中的。   "这一点并不重要。Java在走自己路的过程中,自身已经建设得足够强大。"-Bruce Tate   "如果Sun在做这样一件有益的工作,为什么要打扰他呢?"-Raghu Donepudi   "不应该。如果它实现开源,那么我们能够看到Java的许多技巧,这最终将导致一些问题的出现,例如我们现在使用应用程序服务器时所遇到的问题。"-Rahul Kumar Gupta   "是的。Sun拒绝这样做的唯一原因就是,Java完全是他们自己的产品,他们使用它来使自己的公司得以维持下去。"-Jack Herrington   "一方面,开源的思想是很有吸引力的,因为它将导致更多的错误在很短的时间内就得以修改。另一方面,它可能导致分支分派的不匹配的JAVA虚拟机的出现。"-Michael Pilone   "不。我不相信一群普普通通的所谓天才人物就能取代那些负责管理极为健全的基本概念的大家们的科学思想-其中的大多数人甚至还不能明白这个问题。"-Vlad Patryshev   "开源社团的加入将会加速创新并推动该平台的竞争性。"-Rod Smith(IBM)   "我们需要一个开源Java的主要原因是确保该平台的生命力。如果将来Sun公司发生什么事情的话,开源的Java将列入我们的保险计划中。"-Ed Cobb(BEA)   "我认为是应该的。’开源’Java并不要求Sun做什么事情,它只是要求另外一些公司或个人做一些事情。’开源’Java是不可避免的。我建议Sun积极地实现这一不可避免并为此带来的益处做一些工作。"-Rob Gingell   "我对此并不关心"-Kyle Gabhart   8.你希望Java有怎样的改进?   "从较低层次上,Java需要代码的模块化,扩展和一个更具动态化的模型,以及还需要增加很多的功能以使得应用程序开发更为容易,因为你不可能仅仅利用库来实现一切。"-Bruce Tate   "内省机制(用一个类来分析JavaBean的特性)使用起来太难且过于繁重。"-Laurent Ploix   "需要加入代码使用许可证机制。"-Greg Magnusson,Cyborg Spiders的Web技术开发的奠基者   "应该提供由开发者来进行内存管理的功能。"-Raghu Donepudi   "应该加入运算符重载功能。"-Jack Herrington   "目前迫切需要在Java中加入Jar版本机制。我记不清有多少次遇到XML分析库冲突或者日志库冲突了。"-Michael Pilone   "类对象。十年了,没有任何改变。有大量的类对象需要加上去。"-Vlad Patryshev   "Java平台目前已经变得过于复杂。我们认为Java社团需要做出更好的工作来满足独立的和中小型的商业需要,这也是为了Java继续发展、繁荣和成功的目的。"-Rod Smith(IBM)   "Java非常需要一个更为强壮的模块化的系统。当前,我们所拥有的是一些.jar文件,其结果是成了’.jar文件地狱’。但是今天还很难描述一个互有联系的模块化的系统。"-Ed Cobb   "我原先希望Java能够实现的,过去的Java并没有做到:关于日期和时间问题上有好几处从一开始就是错误的;RMI/IIOP的引入在理论上是正确的但完全没有必要;它自一开始就是自我封闭的。"-Rob Gingell   "对于类的加载和对象的Java运行时刻类型的关系的处理是一个错误,现在我们还在为之付出代价。你不可能真正确定出是否你的程序在编译时刻是类型安全的。而且,如果你在做适当动态的任何操作,你经常需要对一个给定类的正确加载作出猜测分析。"-Jim Waldo   "垃圾回收简直是个噩梦。它有可能使得没有经过良好训练的,懒散的编程人员进入到这个工业领域中。"   "Java需要增加的另外一些功能有:操作符重载;预编译指令(#define,等等);把声明与定义(头文件和源文件)相分离的能力;唯一的、非本机的机器标志符(用于认证之目的)。"-Michael Smialek   "迫切需要加入Code-Behind(页面代码分离)技术!!!ASP.NET和页面代码分离技术所带来的重用性与灵活性是巨大的。我希望JSP 3.0能够朝这个方向发展。"-Kyle Gabhart   "我更愿意使用Java对象来存取操作系统而不是用JNI(Java本机接口),因为大多数的Win32/Linux API都包含在Java中了。"-Alexi Jordanov,OSGi技术公司ProSyst Bulgaria的项目领导者   四、Java带给人们的最伟大的礼物与Java的未来   9.Java对软件社群最大的贡献是什么?   我们收到的大部分反映结果认为是平台独立性,Java平台和该语言本身的创建以及他们创建的各种社团。   "有两点:它使得更广泛的用户群可以接受垃圾收集语言;围绕该语言涌现出了各种集成开发环境。"-Jack Herrington   "Java真正地震撼了许多东西,这包括迫使微软设计出新的产品,诸如Visual Studio的进一步改进和.NET产品的出现等。由于Netscape选择了Java,这使得客户浏览器能够执行JavaScript。它使当今世界服务器端开发也迈出了巨大的一步,受此技术影响的站点数以百万计。"-Michael Pilone   "数百万的学生不需要学习C++。"-Rob Gingell   "能使多家厂商贯彻实施的标准化API的建立。很多厂家竞相提供该标准化接口的最好实现,这给业界创造高质量的解决方案带来了强大发展动力。"-Kyle Gabhart   ".NET"-Michael Smialek   10.Java的未来会如何?   "任何一种语言总是存在其有限的技术领先周期,Java也不例外。在某种意义上看,能超过Java技术会是一种非常有趣的事情。"-Bruce Tate   "当桌面和膝上电脑要被手持设备取代时,我们可能需要一种更简单的更强有力的语言。"-Raghu Donepudi   "C#具有挤垮Java的潜力,它是一种更好的语言。"-Jack Herrington   "微软在通过.NET以一种令人难以置信的速度发展。由于拥有Windows操作系统的大量客户端用户,所以他们比Java具有更大的优势。"-Michael Pilone   "在一些新技术被编程世界接受之前,至少要经过几年的时间。例如,看起来不超过5%的Java程序员能掌握Java泛型编程。请问,又有多少人可以掌握Lock/Condition?"-Vladimir Patryshev   "当技术朝着围绕交互性的结构化(如面向服务的结构化)方向发展的时候,Java语言将继续作为一种语言在计算机工业发展中占有重要地位。"-Rod Smith   "在某种意义上看,Java 虚拟机体系所要求的限制可能有点太严肃了。但是,任何一种新的挑战者虚拟机登上舞台并用之取代Java平台都是一件很好的事情。"-Ed Cobb   "实际上我们可以开发出许多种不同的语言,其中一些可能与我们熟知的Java根本不同,但是仍旧保持应用程序二进制接口(ABI)。这是为什么Java将会保持长时期的重要性的原因。"-Rob Gingell   "Java将继续作为一股巨大的力量存在于IT业中,但是一些瞄准市场的脚本语言将会在某些行业中进一步发展壮大。"-Doug Tillman,Grainger.com站点Java和Python技术的开发者   "任何一个人,只要他在该界业干过多年,都不会相信,存在一种技术会对要推翻自己的更新、更快或者更有效的技术产生免疫力。"-Kyle Gabhart   祝Java 10周年愉快   正如栖息在Java生态系统中的利益是多样化的一样,关于Java本身的看法也是同样是复杂的(读者可以阅读一下Java之父James Gosling说过的话)。也许这会是Java的下一个十年极富生命力的预示。 <淘宝热门商品:
 

3C数码配件 

家倍乐床上笔记本电脑桌专利厂家批发零售店

 

198.00 元 

08秋款欧洲正版G-star双排扣夹克外套 超好


来源:程序员网

小小豆叮

IBM和Sun宣布将Java技术协议延长到2016年

7月12日消息,延续在Java平台上进行合作的承诺,IBM与Java技术的创建者和积极倡导者Sun Microsystems,日前宣布将两家公司签署的Java技术协议延长10年,目标是为全球Java团体中的将近400万开发人员提供长期稳定性保证。此外,这两家公司还宣布了在Sun公司的 x64 Sun Fire服务器运行的Solaris 10操作系统上支持IBM中间件的计划。这些服务器使用的是AMD Opteron处理器。 根据这项延长到2016年的Java协议,IBM将继续在其中间件和Web服务系列软件产品中使用Java技术,其中包括Java EE、Java SE和Java ME。通过此次协议延长,IBM和Sun再次肯定了跨平台Java兼容性的价值和必要性,证明了两家公司在致力于Java创新的同时,还在致力于通过使用合作性Java Community Process来确保兼容性。此外,IBM还将扩展自己所扮演的角色,成为一个为Sun的Java客户提供兼容Java技术的嵌入式产品的渠道合作伙伴。 另外,为响应客户的需求,IBM将自身DB2、Rational、Tivoli和WebSphere品牌软件进行扩展,令这些中间件也能在基于64位AMD Opteron处理器的Solaris 10操作系统上运行。IBM和Sun两家公司都计划专门投资进行相关的工程设计和测试,工作重点是产品的互操作性和及时的产品交付。最终,客户将能够在任何架构中充分利用Solaris 10操作系统的关键特性,包括DTrace、Solaris分区和主动自恢复功能,同时保护自己在IBM软件上的投资 <淘宝热门商品:
 

¥:21.0 

【华佗天然居】天然花草茶花茶中草药中药材

花草茶之瘦腿茶:迷迭香+柠檬草+马鞭草30包21元包快递美容减肥茶

 

保健品/滋补品 

淑芳阁_苗条姿_最有效的减肥瘦身与丰胸专卖店


来源:程序员网

小小豆叮

Sun发布Java路线 更好地支持Web服务和XML

计世网消息美国旧金山当地时间本周一,Sun公司的官员在JavaOne会议上公布了Java编程语言的产品计划,披露了提高Web服务、XML性能等方面改进的详细计划。   Sun的副总裁格雷厄姆·汉弥尔顿表示,首先,Sun将去掉Java产品名字中的数字“2”,未来的版本将不再被称作“Java2Enterprise Edition”,但不会改变现有产品的名字。   Sun计划于2006年发布代号为Mustang的Java StandardEdition6,它将具备开发容易、XML和Web服务增强、桌面改进等特性。它还将具有一个客户端堆栈,使客户端能够与Web服务相连接。Sun还将在其中包含重新设计的XML堆栈、新的脚本引擎,并支持说明性编程。   改良的最终用户体验将提供“Longhorn”的外观和风格。Mustang中核心的系统改进包括一个更简单、快速的代码验证器和增强的文件I/O。   Sun计划于2007年年初发布代号为“Dolphin”的Java StandardEdition7。Sun正在考虑在这一版本的Java中增加Java对XML的直接支持等功能。被考虑的功能还包括扩充对JMXAPI中类和编写MBeans的注释的使用。   管理功能的改进也被包括在其中,其中包括将Java代码和资源封装在能够确定资源和相关性的模块中,XMLWeb服务将被用于平台的远程管理。Java虚拟机将被扩展,以支持Groovy等其它语言。   在企业版Java中,Sun也在考虑针对开发人员的简化。Sun的高级技术人员比尔·香侬说,Java是企业软件的业界标准,但仍然有许多开发人员认为JavaEnterpriseEdition在最初时很难使用。   香侬表示,未来的Java EnterpriseEdition5将具备简化的Web服务支持,对Web服务标准提供更多的支持。Sun计划于今年第四季度发布β版Version5,正式版本的发布时间是2006年第一季度。   Java Enterprise Edition5借鉴了微软公司的IndigoWeb服务技术,能够使开发人员以了了数行代码开发一个Web服务。香侬说,我们将使开发人员能够利用EnterpriseEdition5更方便地编写一个Web服务。(刘彦青编译)(来源:计世网) <淘宝热门商品:
 

 

【化妆品大联盟】☆美丽佳人☆╯护肤·美妆~ 冲三冠特惠!

 

:鲜花速递/蛋糕配送/园艺花艺 

缤纷园艺淘宝店--苗圃直销各类花卉苗木 购买送惊喜


来源:程序员网

小小豆叮

Sun将推Java新标准 重写XML紧密集成.NET

据外电报道,Sun微系统公司近日宣布将对Java开发平台进一步加强和升级,以便使它能够更容易地开发桌面和服务器软件。   Java开发平台正在升级中的最新版本为“Java平台标准版6(SE 6)”,代号为“野马”,Sun计划在2006年年中推出。6月27日,Sun已经迫不及待的提前发布了一套开发包。据悉,定位于开发桌面软件的Java SE 6作了多项改进:XML相关部分已重写,与微软公司的.NET框架也可更加紧密集成。   此外,Sun还表示要对Java SE 7作出改动(代号“海豚”),其中包括加强对于Java Management Extensions的支持以提高可管理性,同时在新版的Java语言中将把XML作为一种数据类型来处理。   在服务器端软件开发方面,此前Sun和其他Java产品公司已表示将会给Java企业版5的开发人员减少负担。新的开发界面有助于程序员开发Web应用和数据库访问。同时,Sun6月27日发布了Java Web Services Developer Pack 1.6, 其中增加了对于FastInfoset的支持 <淘宝热门商品:
 

 

皇冠舒友阁 顶级特效美容护肤 效果才是硬道理

 

5.00 元 

超人气面膜 平民价格 顶级效果


来源:程序员网

小小豆叮

Sun对Java语言安全性与功能做出重大改进

在旧金山召开的JavaOne会议上,Sun Microsystems公司将介绍下一个Java版本(代号为Mustang)的重点特色。   Java开发组核心工程团队成员表示,Java 2平台6.0标准版的新增特色主要表现在6个方面:Java编程语言和工具、安全性能和网络处理、Java Management Extensions、适应性、核心类库和企业客户端与XML。   Sun公司官员表示:我们并没有对Java语言的语法作任何改变,而是添加了一些JSR(Java Specification Requests),以便扩展该平台处理Java语言的能力,提高其在运行中的性能。JSR 223就是其中之一,用于实现语言增强功能,将会包括在Mustang版本之中。   JSR 223又被称为“Java平台脚本”,其目的是将脚本语言集成到Java平台之上。Mustang也将包括一个基于Mozilla Rhino的JavaScript工具,这是一个使用Java语言编写的开放源代码JavaScript实现工具。   该团队还介绍了另外两个JSR——JSR 199和JSR269。   JSR 199是一个Java编译器API,它定义了在应用程序范围内用于编译源文件的框架。   JSR 269是一个可插入式注释处理API,由此对Java的注释处理工具进行了标准化处理。   为了增强安全性,Sun公司计划增加用于XML数字签名的JSR 105和支持I/O API智能卡的JSR 268两个方面的投入力度。其中I/O API智能卡可以将Java应用程序与智能卡上的应用程序融合关联起来。   其它计划引入Mustang 的新安全特征包括:本地平台上集成的Java 类库安全服务和Kerberos、支持简单且受保护的GSS-API 的谈判机制、采用LDAP认证技术的Java 认证和授权服务登陆模块以及安全认证申请框架。   Sun公司还官员表示,已经为Java引入了更加丰富的网络特性,包括国际化的域名、资源标识符和对网络参数进行可编程访问。   在继续对Mustang版本锦上添花的同时,Sun公司也开始筹划J2SE(Java 2平台标准版)7.0版,代号为Dolphin。当前的Java版本是Java 5.0,代号为Tiger。   在JMX(Java Management Extensions)的技术前沿,Sun公司正在致力于通过JSR 255来建立JMX API的2.0版本,但是这部分将会作为Dolphin版本的内容,而Mustang版本仅包括JMX的1.3 版本。   Java在可维护性方面所做的改进包括:DTrace(动态跟踪)的运行时支持、更加友好的控制台用户界面、增强的“诊断能力”、增强的JVM工具接口和JPDA(Java平台调试架构)功能。   Java在核心类库方面增强的内容包括:找出并整理磁盘空闲空间、允许java.io.File类库文件支持Window下的长路径名称。   Sun公司曾经说过,XML和Web服务将是Mustang版本的一大亮点。因此,关于企业客户端和XML用于Mustang的增强版本,Sun公司将着重推出JAX-WS 2.0与JAXB2.0。前者先前称为JAX-RPC,是Java用于XML-Web服务的架构, 后者是Java用于XML绑定的架构。Mustang版本也将隆重推出JDBC(Java Database Connectivity)4.0版本。   虽然此次推出诸多改进,但是JDK团队还是提醒人们,并非所有的这些都将在Mustang版本中一次完全实现。这也就是为什么Sun公司要求开发人员及时获取Mustang最新版本的“快照”,因为由此可以随时了解Java改进的进程并修补bug。Sun公司每周给出一个新的Mustang版本的开发情况。   Tangosol公司总裁Cameron Purdy评论道:“我认为Java 5[JDK 1.5]已经有了诸多改进,包括注释、新的for-loop语句、自动缩进、静态导入等语言上的改进。另一方面,将Web服务器和JavaScript支持囊括其中也非常有趣,因为它在根本上意味着:哪里有Java,哪里就有一个最小化的HTTP应用程序环境。理论上讲,以此为基础,就让每个设备都拥有自己的基于HTTP管理工具,也就等于网络上的每一个设备都能为你所拥有。”   Echelon 4公司的工程副主管Bob Laferriere说:“最大的改进是Web服务和XML相关的新增功能。JAXB 2将添加图表(schema)支持。从图表到Java类库的绑定对我来说意义重大,因为它将创建一个从结构化XML文档到Java类库之间的无缝切换。此举将在系统与软件工程之间架起一座简明的桥梁。然而,我的疑虑是:对于大多数JSR,是不是仍将重起炉灶,重新做起”。   随着Java步入它的第二个十年,Sun公司面临着对于技术发展的控制力度更小的局面。但是考虑到Sun公司的未来构想,这个局面不一定有妨大碍?   另一方面,Laferriere也对在内核中包罗万象的必要性提出了质疑。 “反过来看,到底这些新特征中有多少是内核JDK部分所确实需要的呢?”他问到,“随着Java 6版本增加了影响范围,那些大的、导致程序执行慢的问题将在Java中卷土重来。对于.Net也是如此,它也变得非常庞大。在这个问题上对于整个平台都是如此,简直有如一场较量。拥有开发事物的开放源码,但却要开发人员费尽心思作出决定。”   波士顿Burton集团公司的分析家Anne Thomas Manes对这些感想做出了回应。“使我最苦恼的就是我其实一点都不喜欢JAX-WS,”Manes抱怨道,“有些事情,Sun JAX-WS团队的确应该向Microsoft公司学习。他们应该构造一个类似Indigo的软件—包括JAX-WS/JAXM、JMS、RMI和EJBcommon的编程模型。但是Sun公司没有做到。不过,至少他们从JAX-RPC到JAX-WS上面已经迈进了一大步,并且他们并不惧怕打破向后兼容性,”Manes补充道,“但是JAX-WS仍然还是太笨拙,Sun公司的传统思路普遍过于精雕细琢。” <淘宝热门商品:
 

136.00 元  

达人公社 专柜正品 纽巴伦 newbalance 匡威 crocs折扣 店

正品 日版纽巴伦new balance 型号:TK02 深灰黑

 

¥:50.00 

【北京同仁堂国药】


来源:程序员网

小小豆叮

JavaOne第一天:Sun推出品牌笔记本 开发工具支持AJAX

JaveOne 2005 的第一天已经过去了。 由于时差的关系,昨天半夜里的时候,正是Day 1最热闹的时候。 不过这样也好,老外们忙完了一天,就开始写他们的blog了,而我们这里天亮了,正好可以看看各种各样的blog,了解第一天发生的事情。 Day 1确实发生了不少的事情。 看到的第一条(我不确定这是不是在JavaOne上发布的):Sun准备推出自己的移动计算机(也就是Sun品牌的笔记本电脑)。详情见Yahoo! News: Sun Cuts Workstation Prices, Introduces Notebooks 。 Sun的笔记本电脑称之为Ultra 3 Mobile Workstation,使用SPARC处理器(为什么不是AMD处理器?也许Sun担心,使用AMD,那么我就可以安装Windows了)。 在Sun,有条不成文的规定,如果要使用笔记本电脑,不能用IBM和Dell的,最好用Toshiba的,因为IBM和Dell在服务器市场是Sun的竞争对手。 Sun绝对不会一面和这两家竞争,一面付钱给他们,用他们的笔记本。 现在好了,Sun有自己的笔记本了,而且是SPARC的,多半运行新的Solaris 10(或者是Sun Java Desktop System,基于SuSE Linux的桌面系统)。 据我知道,使用Solaris的人,都是Solaris的dead-hard分子,就像使用Apple的Machitosh一样。 简单的推断一下,也可以想象,Sun推出了笔记本电脑以后,至少在初期,会和Apple一样,有忠实的用户群,但是不会很大。 第二条消息:IBM和Sun续约,Java的使用许可再续10年(Java 10周岁的时候,再续10年,看来10这个数字在这一周是个吉利数字了)。 详情可以参考Yahoo! News: IBM and Sun Microsystems Extend Java Technology Agreement,这包括了对几乎所有Java产品的使用,包括了Java SE,Java EE等。 这条消息是Jonathan Schwartz在SunOne 2005的第一天宣布的,IBM的Steve Mills (Senior VP of the IBM Software Group)则是通过录像确认了这份新合约。 "With this extension, IBM and Sun continue to promote and re-affirm the value and necessity of Java compatibility across platforms and demonstrate that both companies are committed to Java innovation. Sun and IBM will also continue to advance and enhance the development of Java technology through the collaborative Java Community Process (JCP) (SM). In addition, IBM will also expand its role to become a channel partner in delivering Java compatible products for the embedded market to Suns Java technology licensees." 同一时刻,作为对用户需求的答复(也可能是对新10年Java使用许可证的回报),IBM也宣布将在基于AMD Opteron的Solaris 10 中支持WebSphere, DB2, Rational和Tivoli。 这条消息可能比新10年的Java许可证更吸引我,原因很简单,如果我使用WebSphere,我会有给多的选择,或者是Win-tel平台,或者是更可靠的Solaris-AMD平台。 Sun在Day 1页宣布了,将把Java EE Application Server Platform 9开放源码,在java.net中的项目为:GlassFish,包括了Java EE Application Server,Enterprise Service Bus (ESB)和Java Business Integration(JSR208)。 许可证则是基于CDDL的。 Graham Hamilton则正式宣布了Java改名:不再有那个2字了。我昨天的blog: 再见了J2SE中写过这个事情。 当然,JavaOne上不会只是简单的宣布一下名字换了,还介绍了Java SE 7 (Dolphin)和Java EE 5的roadmap。 关于AJAX,也有一条新的消息。 Java Studio Creator 2中包含了一些AJAX的模块: "The latest version is built on top of NetBeans and includes some new rich components including some new AJAX enabled components that offer Google Suggest like functionality. The AJAX component is available from java.net and Creator 2 from www.developers.sun.com/jscreator. -- Vinny Carpenter’s blog 更多JavaOne 2005 Day 1,可以参考Related Links中的blog。 <淘宝热门商品:
 

42.00 元  

同仁堂保健品 协和护肤品 营养品 减肥瘦身品

 

39.00 元  

零售批发*洁丽雅毛巾专卖店*更齐更全更多*更专业

洁丽雅浴巾8464 无捻线,柔软吸水,140*70 390克


来源:程序员网

小小豆叮

用Java的加密机制来保护你的数据

Java开发工具包 (JDK)对加密和安全性有很好的支持。其中一个优势就是其内置的对Socket通信的支持。因此,很容易做到在服务器和客户之间建立安全的数据流。 流 Java streams 是一个强大的编程工具。java.io包提供了很多标准的流类型,并能很容易的建立自己的流类型。流的一个有用的特点是和链表一样的简单处理过程。表 A是一个用链表读取文本的例子。 ufferedReader br = new BufferedReader( new FileReader(“c:\foo.txt”)); String line = null; while((line = br.readLine()) != null) { System.out.println(line); } 这段代码将 FileReader和 BufferedReader链接起来。我们在用客户机/服务器应用程序的时候也会用到类似的概念。 关键字 对于验证来说,关键字很重要,表 B (KeyGen.java)提供了一个称为 getSecretKey的标准方法。通过运行KeyGen来产生一个关键字。因为我们采用同步方法,所以客户机和服务器必须用相同的关键字。 isting B?KeyGen.java /* * Created by IntelliJ IDEA. * User: jbirchfield * Date: Mar 19, 2002 * Time: 9:33:22 AM */ import com.sun.crypto.provider.SunJCE; import javax.crypto.KeyGenerator; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.security.Key; import java.security.NoSuchAlgorithmException; import java.security.Security; public class KeyGen { public static final String KEY_FILE = "secret.key"; public static final String ALGORITHM = "DES"; public static void main(String[] args) { Security.addProvider(new SunJCE()); new KeyGen(); } public KeyGen() { KeyGenerator kg = null; try { kg = KeyGenerator.getInstance(ALGORITHM); Key key = kg.generateKey(); writeKey(KEY_FILE, key); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } } private void writeKey(String filename, Object o) { try { FileOutputStream fos = new FileOutputStream(filename); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(o); oos.flush(); fos.close(); } catch (IOException e) { e.printStackTrace(); } } public static Key getSecretKey() { Security.addProvider(new SunJCE()); FileInputStream fis = null; try { fis = new FileInputStream(KEY_FILE); } catch (FileNotFoundException e) { e.printStackTrace(); } Key key = null; try { ObjectInputStream ois = null; ois = new ObjectInputStream(fis); key = null; key = (Key) ois.readObject(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } System.out.println("key = " + key); return key; } } 安全socket 我们从一个简单的类开始,它提供我们在普通socket对象之上的加密。表 C (SecretSocket.java) 包含了两段代码-Socket和Key对象。我们的构造器创建了变量并初始化了密码: outCipher = Cipher.getInstance(algorithm); outCipher.init(Cipher.ENCRYPT_MODE, key); inCipher = Cipher.getInstance(algorithm); inCipher.init(Cipher.DECRYPT_MODE, key); isting C?SecretSocket.java /* * Created by IntelliJ IDEA. * User: jbirchfield * Date: Mar 20, 2002 * Time: 9:07:51 AM */ import org.bouncycastle.jce.provider.BouncyCastleProvider; import javax.crypto.Cipher; import javax.crypto.CipherInputStream; import javax.crypto.CipherOutputStream; import javax.crypto.KeyGenerator; import javax.crypto.NoSuchPaddingException; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import java.net.UnknownHostException; import java.security.InvalidKeyException; import java.security.Key; import java.security.NoSuchAlgorithmException; import java.security.NoSuchProviderException; import java.security.Security; public class SecretSocket { private Key key = null; private Cipher outCipher = null; private Cipher inCipher = null; private CipherInputStream cis = null; private CipherOutputStream cos = null; private Socket socket = null; private String algorithm = "DES"; public SecretSocket(Socket socket, Key key) { this.socket = socket; this.key = key; algorithm = key.getAlgorithm(); initializeCipher(); } private void initializeCipher() { try { outCipher = Cipher.getInstance(algorithm); outCipher.init(Cipher.ENCRYPT_MODE, key); inCipher = Cipher.getInstance(algorithm); inCipher.init(Cipher.DECRYPT_MODE, key); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (NoSuchPaddingException e) { e.printStackTrace(); } catch (InvalidKeyException e) { e.printStackTrace(); } } public InputStream getInputStream() throws IOException { InputStream is = socket.getInputStream(); cis = new CipherInputStream(is, inCipher); return cis; } public OutputStream getOutputStream() throws IOException { OutputStream os = socket.getOutputStream(); cos = new CipherOutputStream(os, outCipher); return cos; } } 因为socket是双向的通信,所以我们采用两个密码。加密输出的数据并解密输入的数据。我们使用getInputStream()和 getOutputStream(),这两种方法来加密合解密通用的输入和输出的经过包装的数据流。见 表 D 。 isting D public InputStream getInputStream() throws IOException { InputStream is = socket.getInputStream(); cis = new CipherInputStream(is, inCipher); return cis; } public OutputStream getOutputStream() throws IOException { OutputStream os = socket.getOutputStream(); cos = new CipherOutputStream(os, outCipher); return cos; } 在JCE的javax.crypto包中包含CipherInputStream和 CipherOutputStream这两种流类型。他们接收输入输出的流对象和密码对象。 Socket 服务器 开始写我们的socket服务器类吧。 表 E (SecretSocketServer.java)是一个完整的列表。SecretSocketServer在一个端口打开ServerSocket,当接收到连接时,使用SocketHandler产生一个线程来操作连接。 isting E?SecretSocketServer.java /* * Created by IntelliJ IDEA. * User: jbirchfield * Date: Mar 20, 2002 * Time: 9:32:17 AM */ import java.net.ServerSocket; import java.net.Socket; import java.io.IOException; public class SecretSocketServer { public static void main(String[] args) { new SecretSocketServer(); } public SecretSocketServer() { ServerSocket ss = null; try { ss = new ServerSocket(4444); } catch (IOException e) { e.printStackTrace(); } while(true) { try { System.out.println("Waiting..."); Socket s = ss.accept(); SocketHandler h = new SocketHandler(s); Thread t = new Thread(h); t.start(); } catch (IOException e) { e.printStackTrace(); } } } } Socket 句柄 表 F (SocketHandler.java) 确定一个socket对象,通过KeyGen来定位关键字,并建立一个 SecretSocket 对象。. Key key = KeyGen.getSecretKey(); this.ss = new SecretSocket(s, key); isting F?SocketHandler.java /* * Created by IntelliJ IDEA. * User: jbirchfield * Date: Mar 20, 2002 * Time: 9:34:22 AM */ import java.io.IOException; import java.io.InputStream; import java.net.Socket; import java.security.Key; public class SocketHandler implements Runnable { private Socket s = null; private SecretSocket ss = null; private InputStream in = null; public SocketHandler(Socket s) { this.s = s; Key key = KeyGen.getSecretKey(); this.ss = new SecretSocket(s, key); try { in = ss.getInputStream(); } catch (IOException e) { e.printStackTrace(); } } public void run() { boolean bool = true; while (bool) { bool = listen(); } try { s.close(); } catch (IOException e) { e.printStackTrace(); } } public boolean listen() { int aByte; try { while ((aByte = in.read()) >= 0) { System.out.println((char)aByte); } } catch (IOException e) { System.out.println("returning false..."); } return false; } } 注意表F中的 ss对SocketHandler来说是一个实变量。所有的socket 处理都是通过SecretSocket而不是Socket对象。然后我们使用下面的代码: in = ss.getInputStream(); 记住,在SecretSocket中,getInputStream是和CipherInputStream以及 InputStream相结合的。因为SocketHandler 是一个可执行的界面,我们为它生成一个 run()方法。这个方法只是在等待socket的数据: boolean bool = true; while (bool) { bool = listen(); } listen方法用来监听socket 。 int aByte; while ((aByte = in.read()) >= 0) { system.out.println((char)aByte); } Socket 客户 现在我们来看看客户端。见 表 G 。客户端的工作和服务器端很相似,只是反过来了。首先,我们创立一个套接字连接到服务器。使用KeyGen 找到关键字,创立一个安全套接字(SecretSocket)。然后我们利用它的OutputStream给服务器发送数据: Key key = KeyGen.getSecretKey(); Socket s = new Socket("localhost", 4444); SecretSocket ss = new SecretSocket(s, key); OutputStream os = ss.getOutputStream(); os.write("Hello World!".getBytes()); os.flush(); os.close(); s.close(); 总结 通过JCE中的java流和链表,我们可以轻松的加密基于socket的网络通信。 <淘宝热门商品:
 

网络游戏装备/游戏币/帐号/代练 

无悔于心2006

 

52.00 元  

【卡盟在线】

皇冠在线充|QQ黑钻腾讯黑钻地下城与勇士(DNF)黑钻3月


来源:程序员网

小小豆叮

Oracle将成为EJB3规范领导 负责实现entity bean

Oracle公司近日宣布,该公司将成为EJB 3.0技术规范的领导者之一,并为EJB 3.0规范提供持久化技术的参考实现。 目前EJB 3.0规范(JSR-220)的领导者是Sun公司,Oracle表示该公司将与Sun一道成为JSR-220的领导者,并负责提供EJB 3.0参考实现中的持久化技术(即entity bean)部分。该参考实现将派生自Oracle的TopLink产品,后者是一个Java O/R映射工具。 在Oracle网站可以下载EJB 3.0的预览资料:http://www.oracle.com/technology/ejb3 据JCP成员透露,EJB3的最终草稿应该在年底或明年初发布,而正式版本和API实现应该要到2006年春天以后。 <淘宝热门商品:
 

 

【上海商盟】高更食品极美滋新奥尔良系列烧烤腌料皇冠旗舰店

 

88.00 元  

【广州商盟】外贸男装、男鞋工厂直接供货批发零售

〖亿贝特价〗外贸原单Versace范思哲多LOGO特色羊毛衫、毛衣V灰紫


来源:程序员网

小小豆叮

JavaOne:一系列模型驱动开发等工具的发布

模型驱动的开发工具,网络应用以及网格计算,将由Compuware和Iceosoft Technologies等厂商在JavaOne大会上进行介绍。 详情请见: http://www.javaworld.com/javaw orld/jw-06-2005/jw-0627-iw-vendors.html <淘宝热门商品:
 

 

香港恒邦充电电池/充电器专卖店

 

48.00 元  

韩国同步时尚休闲卫衣长款全棉开衫外套


来源:程序员网

小小豆叮

Java反编译的研究

java诞生于1995年,是一门较年轻的语言。它以平台无关性,安全性,面向对象,分布式,键壮性等特点赢得了众多程序员的青睐。特别是它简洁的面向对象的语言风格,更让许多人对它爱不释手。但人们在使用java的过程中,会发现它有几个致命的弱点:运行速度慢,用户使用不便,源代码保护机制不够安全。特别是在保护源代码方面,java是基于解释一种叫java字节码的中间代码来运行其程序的,而且jvm比计算机的微处理器要简单的多,文档也很齐全,结果造成其目标程序很容易被反编译,而且所得代码和其原始代码十分相似,甚至可以一模一样,可读性相当好。这就给java的代码保护带来了不利。但要实现java程序的保护,也不是不可能的,经研究和总结,至少有三种实现方式:1.混淆器;2.网络加载重要类;3加密重要类。 1 混淆器 目前,开发人员使用的比较多的保护代码的方法是用混淆器。混淆器是采用一些方法将类,变量,方法,包的名字改为无意义的字符串;使用非法的字符代替符号;贴加一些代码使反编译软件崩溃;贴加一些无关的指令或永远执行不到的指令等使反编译无法成功或所得的代码可读性很差。这样就实现了反反编译的目的。我们来做个演示。原始代码如下: import java.io.*; import java.security.*; public class sKey_kb{ public static void main(String args[]) throws Exception{ FileInputStream f=new FileInputStream("key1.dat"); ObjectInputStream b=new ObjectInputStream(f); Key k=(Key)b.readObject(); byte[] kb=k.getEncoded(); FileOutputStream f2=new FileOutputStream("keykb1.dat"); f2.write(kb); for(int i=0;i>,这里就不祥述了)。 加密完成后,就是通过解密来获取原始类的java字节码。可以通过一个DecryptStart程序运行经过加密的应用。 具体方法如下: public class DecryptStart extends ClassLoader { private SecretKey key; private Cipher cipher; public DecryptStart( SecretKey key ) throws GeneralSecurityException,IOException { this.key = key; String algorithm = "DES"; SecureRandom sr = new SecureRandom(); System.err.println( "[DecryptStart: creating cipher]" ); cipher = Cipher.getInstance( algorithm ); cipher.init( Cipher.DECRYPT_MODE, key, sr ); } // main过程:我们要在这里读入密匙,创建DecryptStart的 static public void main( String args[] ) throws Exception { String keyFilename = args[0]; String appName = args[1]; String realArgs[] = new String[args.length-2]; System.arraycopy( args, 2, realArgs, 0, args.length-2 ); System.err.println( "[DecryptStart: reading key]" ); byte rawKey[] = Util.readFile( keyFilename ); DESKeySpec dks = new DESKeySpec( rawKey ); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance( "DES" ); SecretKey key = keyFactory.generateSecret( dks ); DecryptStart dr = new DecryptStart( key ); System.err.println( "[DecryptStart: loading "+appName+"]" ); Class clasz = dr.loadClass( appName ); String proto[] = new String[1]; Class mainArgs[] = { (new String[1]).getClass() }; Method main = clasz.getMethod( "main", mainArgs ); Object argsArray[] = { realArgs }; System.err.println( "[DecryptStart: running "+appName+".main()]" ); main.invoke( null, argsArray ); } 虽然应用本身经过了加密,但启动程序DecryptStart没有加密。攻击者可以反编译启动程序并修改它,把解密后的类文件保存到磁盘。降低这种风险的办法之一是对启动程序进行高质量的模糊处理。或者,启动程序也可以采用直接编译成机器语言的代码,使得启动程序具有传统执行文件格式的安全性.比如使用java的jini技术,来实现解密部分,就可以作到。当然,这是需要付出一定的代价的,就是丧失了java的最大特点--平台无关性。不过,jni技术可以用c语言在多种平台实现,我们可以在不同的平台编写不同的启动程序。 4 综合实例: 对于一些需要网络支持的软件来说,可以建立一个Web站点,在站点上存放该软件的关键类,并且建立用户管理机制,用户直接登陆网站进行确认,是许可用户,则发放解密key文件,让其下载关键类,在本地解密运行。这样作的优点是建立的Web站点可以有效的管理密钥以及用户资料。从而起到加强保护软件源代码的作用,并方便软件升级。用C/S结构是不错的选择。   <淘宝热门商品:
 

118.00 元 

【冲皇冠】八心八箭瑞士钻石六爪经典钻戒指

 

80.00 元  

托玛琳厂家直营店

托玛琳预防富贵病;脂降压降糖减肥 活效清肠杯 一馈赠佳品限量版


来源:程序员网

小小豆叮

用TikeSwing框架开发Java应用的表现层程序

JavaWorld发表的一篇文章介绍了如何借助TikeSwing框架开发Java应用的表现层程序。 TikeSwing是一个开源的Swing框架,提供了高层级的“模型-视图-控制器”(MVC)架构,并且简化了Swing的使用。TikeSwing框架支持普通Java对象(POJO)的编程模型,它可以将视图组件与JavaBean直接挂接起来。JavaWorld的这篇文章介绍了Ti keSwing的重要特性,并展示了如何用该框架构建一个MVC架构的应用程序。 全文请看:http://www.javaworld.com/javaworld/jw-06-2005/jw-0620-tikeswing_p.html <淘宝热门商品:
 

69.00 元 

为什么我们的压缩袋值得你购买?一定有人家不能比的原因!!

 

 

【广州商盟】意外金喜服装◎抵制暴利低价有好货◎收藏小店有惊喜


来源:程序员网

小小豆叮

Java界面框架SwingWT发布0.87版

Java界面框架SwingWT近日发布了0.87版。 SwingWT在SWT的基础上实现了Swing和AWT的接口,使开发者能够将Swing/AWT的界面程序移植到SWT上使用。新版本改进了JFileChooser和DefaultTreeCellEditor的实现,增加了很多兼容性的方法,并且改进了对字体的支持,此外还修补了一些bug,尤其是在Mac OS X上的bug。 下载地址:http://swingwt.sourceforge.net/ <淘宝热门商品:
 

6.80 元  

北欧橱窗

三冠 三角形强力吸墙角架/置物架/杂物架 承重3公斤 不伤墙面0.14

 

 

丑丑靓坊 丽君百合减肥胶囊淘宝唯一授权店铺


来源:程序员网

小小豆叮

WebObjects:苹果的Java web框架将开放源码

苹果计划将自己的web开发框架WebObjects开放源码。该框架将随Mac OS X 10.4(代号“Tiger”)的开发工具包免费发布。 WebObjects是一种基于组件的web框架,用Java写成,与开源的Tapestry框架多少有些相似,但其中还具备对O/R映射和web service的支持。 下载地址:http://www.macworld.co.uk/news/index.cfm?home&NewsID=11860 <淘宝热门商品:
 

48.00 元  

韩国同步时尚休闲卫衣长款全棉开衫外套

 

18.50 元 

出口韩国 棉质弹性不透内搭显瘦踩脚裤/打底裤


来源:程序员网

小小豆叮

内存数据库StelsEngine发布1.2版本

内存数据库StelsEngine近日发布了1.2版本。 StelsEngine是一个内存SQL引擎,它支持标准的JDBC接口,但关系型数据的存储和处理都在Java应用的内存空间中进行,因此可以大大提高数据处理的速度。它支持ANSI SQL92中的绝大部分关键字,支持整型、浮点型、字符串、日期/时间、Java对象等数据类型,可以从DBMS加载数据,并且是平台独立的。 下载地址:http://www.csv-jdbc.com/stels_engine.htm <淘宝热门商品:
 

118.00 元 

【冲皇冠】八心八箭瑞士钻石六爪经典钻戒指

 

 

保真无条件包退店【实力派著名书画家在线直销专场】薄金交友


来源:程序员网

小小豆叮

数字转换类

import java.io.*; class ConvertNum { boolean bool = false; int group; int length; int left; String convertResult; public void setData(String s) { length = s.length(); for(int i = 0 ;i12) return; bool = true; if(i%4>0) group = i/4+1; else group = i/4; } } if(!bool) { left = length; if(length%4>0) group = (length)/4+1; else group = (length)/4; } splitStr(s); } public void splitStr(String s) { String leftStr[] = new String[group]; String right = ""; String temp = ""; for(int i = 1;i <= group;i++) { if(left<4) { leftStr[0] = s.substring(0,left); } else { if(i
 

132.00 元 

假一罚十 专柜正品 进口牛皮单肩包

 

¥:59.00 

冉冉天使屋-外贸童装批发代理

冬季宝宝必备 加厚小老虎造型棉哈衣/可当包被 土黄色(0-1岁)


来源:程序员网

小小豆叮

SQL Server数据库Java驱动jTDS发布1.1版本

SQL Server数据库的Java驱动程序jTDS近日发布了1.1版本。 jTDS JDBC Driver是针对微软SQL Server数据库开发的JDBC驱动程序。1.1版本是一个重要的版本发布,新特性包括:SQL语句缓存有很大改进,可配置的元数据缓存,优化了锁定支持,更快的单向游标等。 下载地址:http://jtds.sourceforge.net/ <淘宝热门商品:
 

 

淘宝紫砂壶第一皇冠!淘宝最大的信用度第一的紫砂壶大卖家!

 

78.00 元 

印疤修复液 消除深浅痘印 改善凹凸疤痕


来源:程序员网

小小豆叮

数据库集群应用C-JDBC发布1.3.2版本

数据库集群应用C-JDBC近日发布了1.3.2版本。 C-JDBC是由ObjectWeb开源组织开发的。C-JDBC应用在于数据库会反复的生成服务的站点,并且C-JDBC 能够清楚地识别每个元素在数据库的集群中的位置。然后在通过C-JDBC 的读取,使每一行的代码被均衡的下载。这个项目能使中间件反复生成数据库集群的许多特点,对于那些没有一个正式的DBA或者是不支持数据库集群的数据库生产厂商,这个项目是很有它的价值。 新版本提供了更好的可移植性,性能也有所提升,并对事务隔离做了改进。 下载地址:http://c-jdbc.objectweb.org/ <淘宝热门商品:
 

3C数码配件 

:麒麟光电

 

 

糊涂乖宝☆电子城


来源:程序员网

小小豆叮

Sun提交Java模块系统规范 力求解决Java应用部署难题

Java模块系统规范(JSR-277)近日由Sun公司提交JCP组织进行复审投票。该规范试图解决现在Java应用在部署时的麻烦。 JSR-277是由Sun公司发起的一个技术规范,其目标是解决Java应用在部署时遇到的很多麻烦,例如JAR的版本问题、JAR之间的依赖问题等。按照JSR-277的规定,发布模块中将包含描述该模块信息的元数据,例如版本信息、模块中包含的资源、与其他模块的依赖关系等。规范专家组希望依靠这些统一的模块元数据来解决Java应用部署的难题。 关于JSR-277的详情请看:http://www.jcp.org/en/jsr/detail?id=277 <淘宝热门商品:
 

35.00 元  

08新款泰迪熊出口日本 1米超大号 抱抱熊/趴趴

 

110.00元  

动感娱乐中心(修身堂 减肥咖啡 瘦身咖啡 神奇咖啡)


来源:程序员网

小小豆叮