技术改变世界 阅读塑造人生! - shaogx.com

This string was altered by TechBlog\Plugins\Example.; This is an example to show the potential of an offcanvas layout pattern in Bootstrap. Try some responsive-range viewport sizes to see it in action.

监视java虚拟机各种状态

 /**  * 用户可以通过MXBean可以管理和监视虚拟机。  */ public class JDKMBean {       /**      * MemoryMXBean是Java 虚拟机的内存系统的管理接口 Java 虚拟机具有此接口的实现类的单一实例      */     public static void printMemoryMXBean() {         // 获得单一实例         MemoryMXBean instance = ManagementFactory.getMemoryMXBean();         System.out.printf("%n---%s---%n", instance.getClass().getName());         // 返回用于对象分配的堆的当前内存使用量         System.out.printf("%s: %s%n", "HeapMemoryUsage",                 instance.getHeapMemoryUsage());         // 返回 Java 虚拟机使用的非堆内存的当前使用量         System.out.printf("%s: %s%n", "getNonHeapMemoryUsage",                 instance.getNonHeapMemoryUsage());         // 运行垃圾回收器         instance.gc();     }       /**      * ClassLoadingMXBean是Java 虚拟机的类加载系统的管理接口 Java 虚拟机具有此接口的实现类的单个实例      */     public static void printClassLoadingMXBean() {         // 获得单一实例         ClassLoadingMXBean instance = ManagementFactory.getClassLoadingMXBean();         System.out.printf("%n---%s---%n", instance.getClass().getName());         // 返回当前加载到 Java 虚拟机中的类的数量         System.out.printf("%s: %s%n", "LoadedClassCount",                 instance.getLoadedClassCount());         // 返回自 Java 虚拟机开始执行到目前已经加载的类的总数         System.out.printf("%s: %s%n", "TotalLoadedClassCount",                 instance.getTotalLoadedClassCount());         // 返回自 Java 虚拟机开始执行到目前已经卸载的类的总数         System.out.printf("%s: %s%n", "UnloadedClassCount",                 instance.getUnloadedClassCount());     }       /**      * ThreadMXBean是Java 虚拟机线程系统的管理接口 Java 虚拟机具有此接口的实现类的单个实例      */     public static void printThreadMXBean() {         // 获得单一实例         ThreadMXBean instance = ManagementFactory.getThreadMXBean();         System.out.printf("%n---%s---%n", instance.getClass().getName());         // 返回活动线程的当前数目,包括守护线程和非守护线程。         System.out.printf("%s: %s%n", "ThreadCount", instance.getThreadCount());         // 返回活动线程 ID         System.out.printf("%s: %n", "Thread IDs");         long[] ids = instance.getAllThreadIds();         for (long id : ids) {             System.out.printf("%s;  ", id);         }         System.out.printf("%n");         // 返回活动守护线程的当前数目         System.out.printf("%s: %s%n", "DaemonThreadCount",                 instance.getDaemonThreadCount());         // 返回自从 Java 虚拟机启动或峰值重置以来峰值活动线程计数         System.out.printf("%s: %s%n", "PeakThreadCount",                 instance.getPeakThreadCount());         // 返回当前线程的总 CPU 时间         System.out.printf("%s: %s%n", "CurrentThreadCpuTime",                 instance.getCurrentThreadCpuTime());         // 返回当前线程在用户模式中执行的 CPU 时间         System.out.printf("%s: %s%n", "CurrentThreadUserTime",                 instance.getCurrentThreadUserTime());     }       /**      * RuntimeMXBean是Java 虚拟机的运行时系统的管理接口 Java 虚拟机具有此接口的实现类的单个实例      */     public static void printRuntimeMXBean() {         // 获得单一实例         RuntimeMXBean instance = ManagementFactory.getRuntimeMXBean();         System.out.printf("%n---%s---%n", instance.getClass().getName());         // 返回由引导类加载器用于搜索类文件的引导类路径         System.out.printf("%s: %s%n", "BootClassPath",                 instance.getBootClassPath());         // 返回系统类加载器用于搜索类文件的 Java 类路径         System.out.printf("%s: %s%n", "ClassPath", instance.getClassPath());         // 返回传递给 Java 虚拟机的输入变量,其中不包括传递给 main 方法的变量         System.out.printf("%s%n", "InputArguments");         List<String> args = instance.getInputArguments();         for (String arg : args) {             System.out.printf("%s;  ", arg);         }         // 返回 Java 库路径         System.out.printf("%s: %s%n", "LibraryPath", instance.getLibraryPath());         // 返回正在运行的 Java 虚拟机实现的管理接口的规范版本         System.out.printf("%s: %s%n", "ManagementSpecVersion",                 instance.getManagementSpecVersion());         // 返回表示正在运行的 Java 虚拟机的名称         System.out.printf("%s: %s%n", "Name", instance.getName());           // 返回 Java 虚拟机规范名称         System.out.printf("%s: %s%n", "SpecName", instance.getSpecName());         // 返回 Java 虚拟机规范供应商         System.out.printf("%s: %s%n", "SpecVendor", instance.getSpecVendor());         // 返回 Java 虚拟机规范版本         System.out.printf("%s: %s%n", "SpecVersion", instance.getSpecVersion());           // 返回 Java 虚拟机实现名称         System.out.printf("%s: %s%n", "VmName", instance.getVmName());         // 返回 Java 虚拟机实现供应商         System.out.printf("%s: %s%n", "VmVendor", instance.getVmVendor());         // 返回 Java 虚拟机实现版本         System.out.printf("%s: %s%n", "VmVersion", instance.getVmVersion());           // 返回 Java 虚拟机的启动时间         System.out.printf("%s: %s%n", "StartTime", instance.getStartTime());         // 返回 Java 虚拟机的正常运行时间         System.out.printf("%s: %s%n", "Uptime", instance.getUptime());     }       /**      * OperatingSystemMXBean是操作系统的管理接口 Java 虚拟机具有此接口的实现类的单个实例      */     public static void printOperatingSystemMXBean() {         // 获得单一实例         OperatingSystemMXBean instance = ManagementFactory                 .getOperatingSystemMXBean();         System.out.printf("%n---%s---%n", instance.getClass().getName());         // 返回操作系统的架构         System.out.printf("%s: %s%n", "Arch", instance.getArch());         // 返回 Java 虚拟机可以使用的处理器数目         System.out.printf("%s: %s%n", "AvailableProcessors",                 instance.getAvailableProcessors());         // 返回操作系统名称         System.out.printf("%s: %s%n", "Name", instance.getName());         // 返回操作系统版本         System.out.printf("%s: %s%n", "Version", instance.getVersion());     }       /**      * CompilationMXBean是Java 虚拟机的编译系统的管理接口 Java 虚拟机具有此接口的实现类的单个实例      */     public static void printCompilationMXBean() {         // 获得单一实例         CompilationMXBean instance = ManagementFactory.getCompilationMXBean();         System.out.printf("%n---%s---%n", instance.getClass().getName());         // 返回即时 (JIT) 编译器的名称         System.out.printf("%s: %s%n", "Name", instance.getName());         // 返回在编译上花费的累积耗费时间的近似值         System.out.printf("%s: %s%n", "TotalCompilationTime",                 instance.getTotalCompilationTime());     }       /**      * GarbageCollectorMXBean是Java 虚拟机的垃圾回收的管理接口 Java 虚拟机可能具有此接口的实现类的一个或多个实例      */     public static void printGarbageCollectorMXBean() {         // 获得所有实例         List<GarbageCollectorMXBean> instances = ManagementFactory                 .getGarbageCollectorMXBeans();         System.out.printf("%n---%s---%n",                 GarbageCollectorMXBean.class.getName());         // 遍历每个实例         for (GarbageCollectorMXBean instance : instances) {             // 返回垃圾收集器的名字             System.out.printf("***%s: %s***%n", "Name", instance.getName());             // 返回已发生的回收的总次数             System.out.printf("%s: %s%n", "CollectionCount",                     instance.getCollectionCount());             // 返回近似的累积回收时间             System.out.printf("%s: %s%n", "CollectionTime",                     instance.getCollectionTime());         }     } 转自云代码... 全文

java 虚拟机

深入Java虚拟机之虚拟机体系结构

工作以来,代码越写越多,程序也越来越臃肿,效率越来越低,对于我这样一个追求完美的程序员来说,这是绝对不被允许的,于是除了不断优化程序结构外,内存优化和性能调优就成了我惯用的“伎俩”。... 全文

Java JVM

Java虚拟机及JVM体系结构

JVM(Java 虚拟机)Java虚拟机,java源文件(.java)通过编译器生成字节码文件(.class),字节码文件(.class)通过JVM(Java虚拟机)中的解释器再翻译成特定机器上的机器码。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。每一种平台的解释器是不同的,但是实现的虚拟机是相同的。... 全文

Java JVM 虚拟机

Java虚拟机(JVM)参数配置说明

Java虚拟机(JVM)参数配置说明  在Java、J2EE大型应用中,JVM非标准参数的配置直接关系到整个系统的性能。JVM非标准参数指的是JVM底层的一些配置参数,这些参数在一般开发中默认即可,不需要任何配置。但是在生产环境中,为了提高性能,往往需要调整这些参数,以求系统达到最佳新能。另外这些参数的配置也是影响系统稳定性的一个重要因素,相信大多数Java开发人员都见过“OutOfMemory”类型的错误。呵呵,这其中很可能就是JVM参数配置不当或者就没有配置没意识到配置引起的。  为了说明这些参数,还需要说说JDK中的命令行工具一些知识做铺垫。  首先看如何获取这些命令配置信息说明:假设你是windows平台,你安装了J2SDK,那么现在你从cmd控制台窗口进入J2SDK安装目录下的bin目录,然后运行java命令,出现如下结果,这些就是包括java.exe工具的和JVM的所有命令都在里面。  -----------------------------------------------------------------------D:\j2sdk15\bin>javaUsage: java [-options] class [args...]           (to execute a class)   or  java [-options] -jar jarfile [args...]           (to execute a jar file)  where options include:    -client       to select the "client" VM    -server       to select the "server" VM    -hotspot      is a synonym for the "client" VM  [deprecated]                  The default VM is client.      -cp <class search path of directories and zip/jar files>    -classpath <class search path of directories and zip/jar files>                  A ; separated list of directories, JAR archives,                  and ZIP archives to search for class files.    -D<name>=<value>                  set a system property    -verbose[:class|gc|jni]                  enable verbose output    -version      print product version and exit    -version:<value>                  require the specified version to run    -showversion  print product version and continue    -jre-restrict-search | -jre-no-restrict-search                  include/exclude user private JREs in the version search    -? -help      print this help message    -X            print help on non-standard options    -ea[:<packagename>...|:<classname>]    -enableassertions[:<packagename>...|:<classname>]                  enable assertions    -da[:<packagename>...|:<classname>]    -disableassertions[:<packagename>...|:<classname>]                  disable assertions    -esa | -enablesystemassertions                  enable system assertions    -dsa | -disablesystemassertions                  disable system assertions    -agentlib:<libname>[=<options>]                  load native agent library <libname>, e.g. -agentlib:hprof                    see also, -agentlib:jdwp=help and -agentlib:hprof=help    -agentpath:<pathname>[=<options>]                  load native agent library by full pathname    -javaagent:<jarpath>[=<options>]                  load Java programming language agent, see java.lang.instrument-----------------------------------------------------------------------在控制台输出信息中,有个-X(注意是大写)的命令,这个正是查看JVM配置参数的命令。  其次,用java -X 命令查看JVM的配置说明:运行后如下结果,这些就是配置JVM参数的秘密武器,这些信息都是英文的,为了方便阅读,我根据自己的理解翻译成中文了(不准确的地方还请各位博友斧正)-----------------------------------------------------------------------D:\j2sdk15\bin>java -X    -Xmixed           mixed mode execution (default)    -Xint             interpreted mode execution only    -Xbootclasspath:<directories and zip/jar files separated by ;>                      set search path for bootstrap classes and resources    -Xbootclasspath/a:<directories and zip/jar files separated by ;>                      append to end of bootstrap class path    -Xbootclasspath/p:<directories and zip/jar files separated by ;>                      prepend in front of bootstrap class path    -Xnoclassgc       disable class garbage collection    -Xincgc           enable incremental garbage collection    -Xloggc:<file>    log GC status to a file with time stamps    -Xbatch           disable background compilation    -Xms<size>        set initial Java heap size    -Xmx<size>        set maximum Java heap size    -Xss<size>        set java thread stack size    -Xprof            output cpu profiling data    -Xfuture          enable strictest checks, anticipating future default    -Xrs              reduce use of OS signals by Java/VM (see documentation)    -Xcheck:jni       perform additional checks for JNI functions    -Xshare:off       do not attempt to use shared class data    -Xshare:auto      use shared class data if possible (default)    -Xshare:on        require using shared class data, otherwise fail.  The -X options are non-standard and subject to change without notice.-----------------------------------------------------------------------  JVM配置参数中文说明:-----------------------------------------------------------------------1、-Xmixed           mixed mode execution (default) 混合模式执行  2、-Xint             interpreted mode execution only 解释模式执行  3、-Xbootclasspath:<directories and zip/jar files separated by ;>      set search path for bootstrap classes and resources 设置zip/jar资源或者类(.class文件)存放目录路径  3、-Xbootclasspath/a:<directories and zip/jar files separated by ;>      append to end of bootstrap class path 追加zip/jar资源或者类(.class文件)存放目录路径  4、-Xbootclasspath/p:<directories and zip/jar files separated by ;>      prepend in front of bootstrap class path 预先加载zip/jar资源或者类(.class文件)存放目录路径  5、-Xnoclassgc       disable class garbage collection 关闭类垃圾回收功能  6、-Xincgc           enable incremental garbage collection 开启类的垃圾回收功能  7、-Xloggc:<file>    log GC status to a file with time stamps 记录垃圾回日志到一个文件。  8、-Xbatch           disable background compilation 关闭后台编译  9、-Xms<size>        set initial Java heap size 设置JVM初始化堆内存大小  10、-Xmx<size>        set maximum Java heap size 设置JVM最大的堆内存大小  11、-Xss<size>        set java thread stack size 设置JVM栈内存大小  12、-Xprof            output cpu profiling data 输入CPU概要表数据  13、-Xfuture          enable strictest checks, anticipating future default 执行严格的代码检查,预测可能出现的情况  14、-Xrs              reduce use of OS signals by Java/VM (see documentation) 通过JVM还原操作系统信号  15、-Xcheck:jni       perform additional checks for JNI functions 对JNI函数执行检查  16、-Xshare:off       do not attempt to use shared class data 尽可能不去使用共享类的数据  17、-Xshare:auto      use shared class data if possible (default) 尽可能的使用共享类的数据  18、-Xshare:on       require using shared class data, otherwise fail. 尽可能的使用共享类的数据,否则运行失败  The -X options are non-standard and subject to change without notice.-----------------------------------------------------------------------  怎么用这这些参数呢?其实所有的命令行都是这么一用,下面我就给出一个最简单的HelloWorl的例子来演示这个参数的用法,非常的简单。  HelloWorld.java-----------------------------------------------public class  HelloWorld{ public static void main(String[] args)  {  System.out.println("Hello World!"); }}  编译并运行:D:\j2sdk15\bin>javac HelloWorld.java  D:\j2sdk15\bin>java -Xms256M -Xmx512M HelloWorldHello World!  呵呵,这下满足了吧!  实践:在大型系统或者应用中配置JVM参数比如你配置IDE工具的参数,常见的有IDEA、Eclipse,这个是在一个配置文件中指定即可。如果你要在J2EE环境中配置这些参数,那么你需要在J2EE应用服务器或者Servlet容器相关启动参数设置处指定,其启动文件中来配置,Tomcat是在catalina.bat中配置,weblogic和websphere是在其他地方,具体我就说了,相信玩过的这些大型服务器的人都知道,没玩过的看看这篇文章,玩玩就知道了,呵呵。  另外常常有人问到jdk的一些相关命令用法,其实,当你看到这里的时候,你应该知道如何获取这些命令的用法了。如果你还不会,那么,建议你去学学DOS,我是没辙了。如果你会这些,还是没有看明白,那么你赶紧学学英语吧,这样你就能看懂了。  另外:我在最后给出常用的几个Java命令行说明,以供参考:  (1)、javac用法:javac <选项> <源文件>其中,可能的选项包括:  -g                         生成所有调试信息  -g:none                    不生成任何调试信息  -g:{lines,vars,source}     只生成某些调试信息  -nowarn                    不生成任何警告  -verbose                   输出有关编译器正在执行的操作的消息  -deprecation               输出使用已过时的 API 的源位置  -classpath <路径>            指定查找用户类文件的位置  -cp <路径>                   指定查找用户类文件的位置  -sourcepath <路径>           指定查找输入源文件的位置  -bootclasspath <路径>        覆盖引导类文件的位置  -extdirs <目录>              覆盖安装的扩展目录的位置  -endorseddirs <目录>         覆盖签名的标准路径的位置  -d <目录>                    指定存放生成的类文件的位置  -encoding <编码>             指定源文件使用的字符编码  -source <版本>               提供与指定版本的源兼容性  -target <版本>               生成特定 VM 版本的类文件  -version                   版本信息  -help                      输出标准选项的提要  -X                         输出非标准选项的提要  -J<标志>                     直接将 <标志> 传递给运行时系统  (2)、jar用法:jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目录] 文件名 ...选项:    -c  创建新的存档    -t  列出存档内容的列表    -x  展开存档中的命名的(或所有的〕文件    -u  更新已存在的存档    -v  生成详细输出到标准输出上    -f  指定存档文件名    -m  包含来自标明文件的标明信息    -0  只存储方式;未用ZIP压缩格式    -M  不产生所有项的清单(manifest〕文件    -i  为指定的jar文件产生索引信息    -C  改变到指定的目录,并且包含下列文件:如果一个文件名是一个目录,它将被递归处理。清单(manifest〕文件名和存档文件名都需要被指定,按'm' 和 'f'标志指定的相同顺序。  示例1:将两个class文件存档到一个名为 'classes.jar' 的存档文件中:       jar cvf classes.jar Foo.class Bar.class示例2:用一个存在的清单(manifest)文件 'mymanifest' 将 foo/ 目录下的所有           文件存档到一个名为 'classes.jar' 的存档文件中:       jar cvfm classes.jar mymanifest -C foo/ .  (3)、javadocjavadoc: 错误 - 未指定软件包或类。用法:javadoc [选项] [软件包名称] [源文件] [@file]-overview <文件>          读取 HTML 文件的概述文档-public                   仅显示公共类和成员-protected                显示受保护/公共类和成员(默认)-package                  显示软件包/受保护/公共类和成员-private                  显示所有类和成员-help                     显示命令行选项并退出-doclet <类>              通过替代 doclet 生成输出-docletpath <路径>        指定查找 doclet 类文件的位置-sourcepath <路径列表>    指定查找源文件的位置-classpath <路径列表>     指定查找用户类文件的位置-exclude <软件包列表>     指定要排除的软件包的列表-subpackages <子软件包列表> 指定要递归装入的子软件包-breakiterator            使用 BreakIterator 计算第 1 句-bootclasspath <路径列表> 覆盖引导类加载器所装入的                          类文件的位置-source <版本>            提供与指定版本的源兼容性-extdirs <目录列表>       覆盖安装的扩展目录的位置-verbose                  输出有关 Javadoc 正在执行的操作的消息-locale <名称>            要使用的语言环境,例如 en_US 或 en_US_WIN-encoding <名称>          源文件编码名称-quiet                    不显示状态消息-J<标志>                  直接将 <标志> 传递给运行时系统  通过标准 doclet 提供:-d <目录>                         输出文件的目标目录-use                              创建类和软件包用法页面-version                          包含 @version 段-author                           包含 @author 段-docfilessubdirs                  递归复制文档文件子目录-splitindex                       将索引分为每个字母对应一个文件-windowtitle <文本>               文档的浏览器窗口标题-doctitle <html 代码>             包含概述页面的标题-header <html 代码>               包含每个页面的页眉文本-footer <html 代码>               包含每个页面的页脚文本-bottom <html 代码>               包含每个页面的底部文本-link <url>                       创建指向位于 <url> 的 javadoc 输出的链接-linkoffline <url> <url2>         利用位于 <url2> 的软件包列表链接至位于 <url>的文档-excludedocfilessubdir <名称 1>:..排除带有给定名称的所有文档文件子目录。-group <名称> <p1>:<p2>..         在概述页面中,将指定的软件包分组-nocomment                        抑止描述和标记,只生成声明。-nodeprecated                     不包含 @deprecated 信息-noqualifier <名称 1>:<名称 2>:...从输出中排除限定符的列表。-nosince                          不包含 @since 信息-notimestamp                      不包含隐藏时间戳-nodeprecatedlist                 不生成已过时的列表-notree                           不生成类分层结构-noindex                          不生成索引-nohelp                           不生成帮助链接-nonavbar                         不生成导航栏-serialwarn                       生成有关 @serial 标记的警告-tag <名称>:<位置>:<标题>         指定单个变量自定义标记-taglet                           要注册的 Taglet 的全限定名称-tagletpath                       Taglet 的路径-charset <字符集>                 用于跨平台查看生成的文档的字符集。-helpfile <文件>                  包含帮助链接所链接到的文件-linksource                       以 HTML 格式生成源-sourcetab <制表符长度>           指定源中每个制表符占据的空格数-keywords                         使软件包、类和成员信息附带 HTML 元标记-stylesheetfile <路径>            用于更改生成文档的样式的文件-docencoding <名称>               输出编码名称  (4)、rmidrmid: 非法选项:-?用法:rmid <option>  其中,<option> 包括:  -port <option>        指定供 rmid 使用的端口  -log <directory>    指定 rmid 将日志写入的目录  -stop               停止当前的 rmid 调用(对指定端口)  -C<runtime 标记>    向每个子进程传递参数(激活组)  -J<runtime 标记>    向 java 解释程序传递参数    还有很多,下班了,放假了,HOHO,五一来了之后再写吧!   有关更多的java命令可以参考一下这个文章:[url]http://ruruhuang.javaeye.com/blog/47564[/url] http://kenwublog.com/docs/java6-jvm-options-chinese-edition.htm 本文出自 “熔 岩” 博客,转载请与作者联系!... 全文

Java 虚拟机 JVM

深入Java虚拟机JVM类加载初始化学习笔记

1. Classloader的作用,概括来说就是将编译后的class装载、加载到机器内存中,为了以后的程序的执行提供前提条件。2. 一段程序引发的思考:风中叶老师在他的视频中给了我们一段程序,号称是世界上所有的Java程序员都会犯的错误。诡异代码如下:Java代码... 全文

Java虚拟机 JVM

用JavaScript编写Java虚拟机?谈谈哗众取宠的BicaVM

◆ 今日目睹某网络新闻,开篇明义便包含如下几行文字【程序员Artur Ventura,这位超级大牛,用JavaScript写了一个java虚拟机BicaVM】... 全文

Java JavaScript 虚拟机

java虚拟机的启动实例

查看eclipse的源代码,有以下一个zip压缩包: src/plugins/org.eclipse.platform/launchersrc.zip 这是eclipse的启动源码包,解压后有一个launchersrc/library目录,该目录中有一个文件eclipse.c(高一些的版本需要看的是eclipseMain.c),这就是eclipse的带有main函数的主文件,它和一个它依赖的文件最终编译成eclipse这个可执行文件。       eclipse是由java写成的,然而其启动文件却是一个平台可执行文件-elf/pe,那么一定是eclipse可执行程序启动了java环境。在这些c代码中,最终要调用一个函数:startJavaVM或者launchJavaVM,而这些函数最终有两种实现方式,一种是fork/exec+wait的方式,这样的话当你运行eclipse的时候ps或者查看进程管理器的时候就会发现有两个进程,一个是eclipse,另一个是javaw或者java,它主要的优点是可以自己定义java环境的所在地...另一种方式是直接调用JVM的接口启动java环境,就是类似java程序做的那样,它自己搜索java环境的所在,同时它也是可以指定参数的,程序相对比较紧凑一些。      既然eclipse只是一个壳,那么我们显然可以绕开这个壳,它无非就是一个和java程序类似的东西,只是更漂亮一些罢了。查看下面目录的源码,发现作者没有改变入口,仍然以main方法为入口,因此完全可以用java命令来启动: src/plugins/org.eclipse.equinox.launcher/src/org/eclipse/core/launcher/Main.java 这个Main.java是eclipse的启动类,也是被调用的第一个类,其很简单地调用了下面的过程: org.eclipse.equinox.launcher.Main.main(args); 在下面的目录可以找到这个被调用的main: src/plugins/org.eclipse.equinox.launcher/src/org/eclipse/equinox/launcher/Main.java 最终invokeFramework方法被调用,一切正式开始。之所以将启动程序封装成一个平台相关的可执行文件(elf/pe等),其主要原因就是启动很方便,不需要进行命令行输入,任何的GUI上直接点击即可,并且还能定制平台相关的启动风格。使用java命令直接启动eclipse的方法如下: java -jar $eclipse的目录/plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar eclipse是一个可执行文件,它可能被病毒感染,然而即使它被感染了,直接使用java命令启动的IDE可能还是好的,除非java本身也被感染了...此时还可以自己写启动程序,除非jvm动态库被感染了,此时我们还可以重新下载,除非互联网被感染了!... 全文

java 虚拟机 eclipse 平台 jvm 互联网

Win CE 平台上java虚拟机CrE

NetBeans 6 Beta 1出来了!在netbeans中搭建win ce及其他平台的开发环境很方便,请参考: http://www.netbeans.org/community/releases/55/1/mobilitycdc-install_zh_CN.html... 全文

虚拟机 平台 java netbeans application microsoft

Java编程那些事儿10——Java语言简介

         Java语言现在是编程领域主流的开发语言之一,在这里就简单的介绍一下和Java语言相关的一些知识。1.5.1 Java语言历史         1991年,美国的SUN(太阳微系统)公司为了在消费类电子设备(现在称作智能家电)方面进行前沿研究,建立了以James Gosling领导的Green小组进行软件方面的研究,该小组一开始选择当时已经很成熟的C++语言进行设计和开发,但是却发现执行C++程序需要很多的设备内存,这样将增加硬件的成本,不利于市场竞争,所以该小组在C++语言的基础上,创建了一种新的语言,由于该小组的领导很喜欢自己办公室窗外的一棵橡树,所以把该语言的名字叫做Oak,中文意思是橡树,这就是Java语言的前身。... 全文

java 编程 语言 sun jdk 虚拟机

Java编程思想重点笔记(Java开发必看)

Java编程思想,Java学习必读经典,不管是初学者还是大牛都值得一读,这里总结书中的重点知识,这些知识不仅经常出现在各大知名公司的笔试面试过程中,而且在大型项目开发中也是常用的知识,既有简单的概念理解题(比如is-a关系和has-a关系的区别),也有深入的涉及RTTI和JVM底层反编译知识。1. Java中的多态性理解(注意与C++区分)Java中除了static方法和final方法(private方法本质上属于final方法,因为不能被子类访问)之外,其它所有的方法都是动态绑定,这意味着通常情况下,我们不必判定是否应该进行动态绑定—它会自动发生。final方法会使编译器生成更有效的代码,这也是为什么说声明为final方法能在一定程度上提高性能(效果不明显)。如果某个方法是静态的,它的行为就不具有多态性:... 全文

java 编程思想 笔记 虚拟机 多态

1 2 3