蒙在股里 发表于 2015-1-18 11:22:46

发布一篇JVM(Java假造机)中历程事情目次解说

前些天,在CSDN上看到了一个消息,说是net网页编程网页编程AJAX成功在Linux上运行,这一点对我触动很大,而且引发了我许多感叹,所以想写出来分享一下。
每次我们用Java命令运转我们的Java程序,城市在JVM中开启一个历程,关于每个历程,城市有一个绝对应的事情目次,这个事情目次在假造机初始化的时分就已设置好了,默许的情形下,事情目次是我们工程的根目次,好比:
/home/test/Project-
--bin
--divinemind.onlyfun.test.helloworld.java
--src
假设我们在用上面的命令启动helloworld,那末这个历程的根目次就是/home/test/Project/bin,helloworld里举行操纵必要的资本,好比文件甚么的,城市在这个目次举行查找。
在Windows下,情形也是不异的。
我们能够经由过程
---------------------
System.getProperty(“user.dir”);
----------------------
获得以后历程的事情目次,并且当我们想改动这个事情目次的时分,也能够经由过程
---------------------
System.setProperty(“user.dir”,”/home/test/xxxxxxx”);
---------------------
设置以后历程的事情目次,可是,现实上,user.dir这个体系情况是不成以从头设置的,成绩良多,最多见的成绩,以后历程下的一切线程都在利用这个情况变量,假如修正的话,伤害不可思议,Sun的JDK如许做估量是一个小BUG.以是,System.setProperty这个办法只是让我们看看,实践上没有感化。在Sun的JDK1.4中,以后历程的事情目次是没有举措修正的,在JDK1.5中,ProcessBuilder在这方面有所改善。
当我们没有选择必要利用非事情目次下的资本的时分,好比:Java挪用A,A利用B,B和A在统一个目次下,A和B不在以后历程的事情目次下,如许的话,程序一定运转会有成绩,这个时分有两个举措能够办理
1.一切的路径都写相对路径
一切的路径写相对路径能够完成,可是程序在部署的时分贫苦十分多,保护也坚苦,可是办法复杂,直不雅。
2.在以后历程中新开一个子历程,修正子历程的事情目次
在Java中新开一个子历程的办法跟JDK版本有关:
A.JDK1.4中:
-------------------------
Processprocess=System.getRuntime.exec(arg1,arg2,arg3);
arg1:体系命令
arg2:命令运转的情况变量
arg3:子历程的事情目次,在这个中央就能够设置我们本人想要的事情目次,到达利用非父历程事情面前目今资本的办法。
-------------------------
B.JDK1.5中:
在这个版本中,我们可使用ProcessBuilder来新开一个JVM历程。
上面的代码能够完成这里我们的功效:
-------------------------
ProcessBuilderpb=newProcessBuilder("myCommand","myArg1","myArg2");
//myDir就是以后历程的事情目次,假如不设置,那就是默许为父历程的事情//目次
pb.directory("myDir");
Processp=pb.start();
-------------------------
Java在平常跟操纵体系的干系的确很少,我们都很少碰着成绩,可是假如我们挪用操纵体系命令甚么的时分,贫苦就多起来了,不外假如我们更多地懂得JVM,成绩就是对照简单办理了。

最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。

兰色精灵 发表于 2015-1-20 22:20:33

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

透明 发表于 2015-1-20 22:20:34

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

莫相离 发表于 2015-1-22 07:03:35

《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。

简单生活 发表于 2015-1-30 23:32:23

是一种将安全性(Security)列为第一优先考虑的语言

再见西城 发表于 2015-2-2 19:24:21

还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。

飘飘悠悠 发表于 2015-2-8 04:22:17

多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。

小妖女 发表于 2015-2-24 04:17:19

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

深爱那片海 发表于 2015-3-7 10:49:17

自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。

若相依 发表于 2015-3-7 23:10:45

你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。

柔情似水 发表于 2015-3-15 15:50:22

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

爱飞 发表于 2015-3-22 02:07:55

J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
页: [1]
查看完整版本: 发布一篇JVM(Java假造机)中历程事情目次解说