- 浏览: 886014 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (687)
- java (127)
- servlet (38)
- struts (16)
- spring (22)
- hibernate (40)
- javascript (58)
- jquery (18)
- tomcat (51)
- 设计模式 (6)
- EJB (13)
- jsp (3)
- oracle (29)
- RUP (2)
- ajax (3)
- java内存管理 (4)
- java线程 (12)
- socket (13)
- path (5)
- XML (10)
- swing (2)
- UML (1)
- JBPM (2)
- 开发笔记 (45)
- Note参考 (15)
- JAXB (4)
- Quartz (2)
- 乱码 (2)
- CSS (2)
- Exception (4)
- Tools (7)
- sqlserver (3)
- DWR (7)
- Struts2 (47)
- WebService (2)
- 问题解决收藏 (7)
- JBOSS (7)
- cache (10)
- easyUI (19)
- jQuery Plugin (11)
- FreeMarker (6)
- Eclipse (2)
- Compass (2)
- JPA (1)
- WebLogic (1)
- powerdesigner (1)
- mybatis (1)
最新评论
-
bugyun:
受教了,谢谢
java 正则表达式 过滤html标签 -
xiongxingxing_123:
学习了,感谢了
java 正则表达式 过滤html标签 -
wanmeinange:
那如果无状态的。对同一个任务并发控制怎么做?比如继承Quart ...
quartz中参数misfireThreshold的详解 -
fanjieshanghai:
...
XPath 元素及属性查找 -
tianhandigeng:
还是没明白
quartz中参数misfireThreshold的详解
一、JRE: java runtime environment java 运行环境
JRE是运行java所需要的环境。包含JVM标准实现和JAVA核心类库,以及javaplug-in。
可以在JRE上进行运行、测试和传输应用程序。JRE不包括编译器,调试器和其他工具。
也就是说,如果直接运行一个java编译好了的class文件,使用JRE就OK 了。
但是如果你要开发一个java文件,然后对它进行编译,调试等工作,这个时候就要用到JDK 了。
二、JDK: java development kit java 开发工具包
java开发人员对这个并不陌生,在创建开发环境的时候首要安装的就是JDK,配置环境变量JAVA_HOME ,指向JDK。
在安装JDK的后,你会发现jdk的目录下有一个jre的目录,也就是说,JDK里面包含一个JRE。这样开发了的程序可以编译后直接运行了。
JDK 有三种版本,常说的J2EE(java 2 platform Enterprise edition),J2SE(java 2 platform standyard edition),
J2ME(java 2 platform micro edition)就是说的JDK 的版本。
JDK 除了核心的java api库和jre外,还包括一些程序组成的工具库(jdk的安装目录bin下可以看到),在这里挑几个简单了解下:
1.javac:java的编译器,可以将java文件编译成字节码
2.java: java的解释器,可以将字节码进行解释运行。
3.jdb: java 调试器,可以设置断点和检查变量,逐行运行程序。
4.javah:产生可以调用java过程的c过程,或建立能被java程序调用的C过程头文件。这个我没用过。暂时理解为C 与 java之间的翻译吧。
5.Javap:java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节码的含义。其实个人感觉叫javap反汇编或反编译器比较别扭。
因为javap毕竟不像其他的反编译工具一样将class文件的直接转成java文件,而只能显示方法的名称,不包括具体实现。
我感觉javap还是作为解释class文件的。如果你没有这个class文件的api,没有ide,想在命令行操作里面查看这个class文件都包括什么方法
那javap还是很简单操作的,例如:
- [root@kaifa02 ~]# javap -private java.lang.Object
- Compiled from "Object.java"
- public class java.lang.Object{
- public java.lang.Object();
- private static native void registerNatives();
- public final native java.lang.Class getClass();
- public native int hashCode();
- public boolean equals(java.lang.Object);
- protected native java.lang.Object clone() throws java.lang.CloneNotSupportedException;
- public java.lang.String toString();
- public final native void notify();
- public final native void notifyAll();
- public final native void wait(long) throws java.lang.InterruptedException;
- public final void wait(long, int) throws java.lang.InterruptedException;
- public final void wait() throws java.lang.InterruptedException;
- protected void finalize() throws java.lang.Throwable;
- static {};
- }
[root@kaifa02 ~]# javap -private java.lang.Object Compiled from "Object.java" public class java.lang.Object{ public java.lang.Object(); private static native void registerNatives(); public final native java.lang.Class getClass(); public native int hashCode(); public boolean equals(java.lang.Object); protected native java.lang.Object clone() throws java.lang.CloneNotSupportedException; public java.lang.String toString(); public final native void notify(); public final native void notifyAll(); public final native void wait(long) throws java.lang.InterruptedException; public final void wait(long, int) throws java.lang.InterruptedException; public final void wait() throws java.lang.InterruptedException; protected void finalize() throws java.lang.Throwable; static {}; }
javap 根据传递的不同参数展示不同的内容,可以使用javap -help来查看具体参数的使用,参数很少,也比较简单
- [root@kaifa02 ~]# javap -help
- Usage: javap <options> <classes>...
- where options include:
- -c Disassemble the code
- -classpath <pathlist> Specify where to find user class files
- -extdirs <dirs> Override location of installed extensions
- -help Print this usage message
- -J<flag> Pass <flag> directly to the runtime system
- -l Print line number and local variable tables
- -public Show only public classes and members
- -protected Show protected/public classes and members
- -package Show package/protected/public classes
- and members (default)
- -private Show all classes and members
- -s Print internal type signatures
- -bootclasspath <pathlist> Override location of class files loaded
- by the bootstrap class loader
- -verbose Print stack size, number of locals and args for methods
- If verifying, print reasons for failure
[root@kaifa02 ~]# javap -help Usage: javap <options> <classes>... where options include: -c Disassemble the code -classpath <pathlist> Specify where to find user class files -extdirs <dirs> Override location of installed extensions -help Print this usage message -J<flag> Pass <flag> directly to the runtime system -l Print line number and local variable tables -public Show only public classes and members -protected Show protected/public classes and members -package Show package/protected/public classes and members (default) -private Show all classes and members -s Print internal type signatures -bootclasspath <pathlist> Override location of class files loaded by the bootstrap class loader -verbose Print stack size, number of locals and args for methods If verifying, print reasons for failure
6. Jconsole: Java进行系统调试和监控的工具
7.jstat : 对jvm的内存使用量进行监控,感觉这个东西很好,正好这几天看java虚拟机,如果不安装其他工具,使用jstat就可以监控到jvm内容使用的情况和GC状况,对于jvm调优很有帮助:
8.jmap - Memory Map: Prints shared object memory maps or heap memory details of a given JVM process or a Java core file on the local machine or on a remote machine through a debug server。
jmap 能够打印出jvm的内存使用详情,也可以把这些详情输出到特定的文件中进行分析
- [root@kaifa02 ~]# jmap -heap 3876
- Attaching to process ID 3876, please wait...
- Debugger attached successfully.
- Server compiler detected.
- JVM version is 10.0-b22
- using thread-local object allocation.
- Parallel GC with 8 thread(s)
- Heap Configuration:
- MinHeapFreeRatio = 40
- MaxHeapFreeRatio = 70
- MaxHeapSize = 2147483648 (2048.0MB)
- NewSize = 1048576 (1.0MB)
- MaxNewSize = 4294901760 (4095.9375MB)
- OldSize = 4194304 (4.0MB)
- NewRatio = 8
- SurvivorRatio = 8
- PermSize = 16777216 (16.0MB)
- MaxPermSize = 67108864 (64.0MB)
- Heap Usage:
- PS Young Generation
- Eden Space:
- capacity = 123797504 (118.0625MB)
- used = 25266160 (24.095687866210938MB)
- free = 98531344 (93.96681213378906MB)
- 20.40926447111567% used
- From Space:
- capacity = 1900544 (1.8125MB)
- used = 0 (0.0MB)
- free = 1900544 (1.8125MB)
- 0.0% used
- To Space:
- capacity = 20447232 (19.5MB)
- used = 0 (0.0MB)
- free = 20447232 (19.5MB)
- 0.0% used
- PS Old Generation
- capacity = 954466304 (910.25MB)
- used = 19873888 (18.953216552734375MB)
- free = 934592416 (891.2967834472656MB)
- 2.0821990170540374% used
- PS Perm Generation
- capacity = 67108864 (64.0MB)
- used = 35417304 (33.776573181152344MB)
- free = 31691560 (30.223426818847656MB)
- 52.77589559555054% used
[root@kaifa02 ~]# jmap -heap 3876 Attaching to process ID 3876, please wait... Debugger attached successfully. Server compiler detected. JVM version is 10.0-b22 using thread-local object allocation. Parallel GC with 8 thread(s) Heap Configuration: MinHeapFreeRatio = 40 MaxHeapFreeRatio = 70 MaxHeapSize = 2147483648 (2048.0MB) NewSize = 1048576 (1.0MB) MaxNewSize = 4294901760 (4095.9375MB) OldSize = 4194304 (4.0MB) NewRatio = 8 SurvivorRatio = 8 PermSize = 16777216 (16.0MB) MaxPermSize = 67108864 (64.0MB) Heap Usage: PS Young Generation Eden Space: capacity = 123797504 (118.0625MB) used = 25266160 (24.095687866210938MB) free = 98531344 (93.96681213378906MB) 20.40926447111567% used From Space: capacity = 1900544 (1.8125MB) used = 0 (0.0MB) free = 1900544 (1.8125MB) 0.0% used To Space: capacity = 20447232 (19.5MB) used = 0 (0.0MB) free = 20447232 (19.5MB) 0.0% used PS Old Generation capacity = 954466304 (910.25MB) used = 19873888 (18.953216552734375MB) free = 934592416 (891.2967834472656MB) 2.0821990170540374% used PS Perm Generation capacity = 67108864 (64.0MB) used = 35417304 (33.776573181152344MB) free = 31691560 (30.223426818847656MB) 52.77589559555054% used
9.native2ascii 可以将目标文件转成unicode 编码,或者将unicode编码的文件还原成本地编码,也可以指定编码进行转换。
恩,好了,在jdk的bin目录下还有好多这样的工具使用。虽然不经常使用,但是感觉了解一下还是有必要的。
========================== JVM 相关 =======================
下面整理一下对JVM client 和server 的一点点了解:
在昨天的时候和一个朋友聊天才知道jvm 是分client 和server ,实在是惭愧~
在咱们安装完jdk后,在jdk/jre/bin下有目录 client , server ,在jdk/jre/lib/i386 目录下有个jvm.cfg
- -client KNOWN
- -server KNOWN
- -hotspot ALIASED_TO -client
- -classic WARN
- -native ERROR
- -green ERROR
-client KNOWN -server KNOWN -hotspot ALIASED_TO -client -classic WARN -native ERROR -green ERROR
默认启动的时候是使用第一行的启动,或者你可以加参数 java -client className 进行启动,来定制自己时使用clent还是server。
一般开发工具中使用的是client,针对不同的服务器使用的不同,
jvm server比jvm client 更优化,
jvm server 启动较慢但启动后运行速度较快。jvm client 启动较快。
jvm client 中能运行的可能在jvm server中运行出错 ,所以这样的话最好在开发、测试阶段都使用jvm server ,保持和服务器相同。不过一直用client,也没出现过什么问题,服务器端用的是server的。可能这种高技术含量的bug相当不容易出现了。
在这里只做了解吧。不那么懂,没法深入了。
ps:java -version 可以查看出你使用的是client还是 server
- C:\Documents and Settings\Administrator>java -version
- java version "1.6.0_21"
- Java(TM) SE Runtime Environment (build 1.6.0_21-b06)
- Java HotSpot(TM) Client VM (build 17.0-b16, mixed mode, sharing)
C:\Documents and Settings\Administrator>java -version java version "1.6.0_21" Java(TM) SE Runtime Environment (build 1.6.0_21-b06) Java HotSpot(TM) Client VM (build 17.0-b16, mixed mode, sharing)
- [root@kaifa02 ~]# java -version
- java version "1.6.0_06"
- Java(TM) SE Runtime Environment (build 1.6.0_06-b02)
- Java HotSpot(TM) Server VM (build 10.0-b22, mixed mode)
发表评论
文章已被作者锁定,不允许评论。
-
操作系统的目标和作用
2012-07-05 23:46 1313操作系统的目标 目前存在着多种类型的OS,不同类型的OS ... -
利用(ffmpeg)生成视频缩略图(java)
2012-07-01 01:11 0对于上传视频生成缩略图使用的是ffmpeg进行生成的。 自己在 ... -
对Java多线程技术中所有方法的详细解析
2012-06-06 11:32 770一、run()和start() 这两个 ... -
java乱码
2012-06-06 11:33 958自从接触Java和JSP以来, ... -
学习apache commons-io类库中的文件清除器
2011-07-06 23:26 1424学习apache commons-io 1.4类库中的File ... -
java 正则表达式 过滤html标签
2011-05-24 15:10 5345前段时间开发的时候要读取一篇文章的简介内容(也就是前200个字 ... -
转---Eclipse中web-inf和meta-inf文件夹的信息
2011-05-24 13:08 1124Eclipse中web-inf和meta-inf ... -
logback与Log4J的区别
2011-05-17 23:34 1415Logback和log4j是非常相似 ... -
性能优化
2011-04-14 16:10 1160(1)jdbc性能优化 jdbc程序的性能主要由两个因素决定 ... -
JAVA的Random类(转)
2011-04-12 00:21 901Random类中实现的随机算法是伪随机,也就是有规则的随机。在 ... -
非阻塞的Socket链接
2011-04-10 21:59 883import java.io.IOException; ... -
创建临时文件
2011-04-10 21:55 1082package net.java2000.io; ... -
面向对象设计的基本原则
2011-04-07 10:28 1136摘自:http://soft6.com/tech/6/6501 ... -
proxool
2011-04-02 15:01 845属性列表说明: fatal-sql- ... -
当前Java软件开发中几种认识误区
2011-04-01 10:12 868越来越多人开始使用Java ... -
Java中查看一个方法被调用的层次(Reflection、StackTrace)
2011-04-01 00:53 2022package test; public class Mai ... -
反序列化时恢复transient字段
2011-03-30 13:20 1204我们知道将字段设置为transient,可以避免该自动被序列化 ... -
用socket连接服务器直接发送接收邮件
2011-03-22 17:22 1294首页 新闻 论坛 问答 博客 招聘 更多 ▼ 专栏 &l ... -
利用JavaMail收/发Gmail邮件(SSL)
2011-03-22 17:21 2378Gmail目前已经启用了POP3和SMTP服务,具体情况请看 ... -
Java 反射与内省
2011-03-14 22:08 1066一、java反射机制 JAVA反 ...
相关推荐
### JDK与JRE的区别 #### 一、概念解析 **JDK**(Java Development Kit):作为Java开发工具包,它是面向开发人员的核心组件。它不仅包含必要的运行环境(即JRE),还提供了完整的Java软件开发环境,包括编译器...
**Java开发工具包(JDK)与Java运行环境(JRE)详解** 在Java编程领域,JDK(Java Development Kit)和JRE(Java Runtime Environment)是两个至关重要的组件。JDK是Java开发者用于编写、编译和调试Java应用程序的...
值得注意的是,JDK的JRE提供了两种不同类型的JVM,即client和server版本,分别用于优化轻量级应用和重量级应用的执行效率。 JRE,即Java Runtime Environment,是运行Java程序所必需的环境。它包含了JVM,这是一个...
Java运行环境(JRE,Java Runtime Environment)是Java应用程序运行的基础,它包含了Java虚拟机(JVM)、类库以及其他的运行时组件。本压缩包基于jdk1.7.0._45版本精简而来,专注于提供一个轻量级的JRE,主要适用于...
对于"server-jre",它与"client-jre"相对。client-jre是一个轻量级版本,针对桌面应用优化,而server-jre则针对服务器环境,提供更好的性能和内存管理,更适合在高性能服务器上运行长时间服务的Java应用。 描述中...
与标准的JRE相比,Server JRE去除了某些非必要的工具和功能,如Java Web Start和Java插件,以减少资源占用并提高运行效率。这使得Server JRE更适合那些只需要运行Java应用程序,而不需要进行开发或调试的服务器。 *...
6. **server** 和 **client** 目录(可能根据平台有所不同):分别包含针对服务器和客户端优化的JVM实现。 7. **jre** 目录下的`lib/ext`目录:允许用户添加额外的Java扩展类库。 8. **lib/security** 目录:包含...
- 其中,JDK目录下的JRE包含了完整的JVM,而系统盘符下的JRE可能缺少Server端的Java虚拟机。 3. **必要性分析**: - JDK中包含的JRE主要用于支持JDK工具集的运行,因为这些工具也是用Java编写的,同样需要运行...
Java Development Kit (JDK) 和 Java Runtime Environment (JRE) 是Java编程语言的核心组件,用于开发和运行Java应用程序。JDK 11.0.18是Oracle公司发布的一个重要版本,它包含了JRE,因此用户可以进行开发和执行...
**JDK/JRE 17.0.5详解** Java Development Kit (JDK) 和 Java Runtime Environment (JRE) 是Java编程语言的核心组件,对于任何Java开发者和用户来说都至关重要。JDK 17.0.5是Oracle公司发布的最新版本,提供了对...
它强调了两个关键点:首先,与JDK 8不同的是,这个版本不包含`jre`(Java Runtime Environment)目录。在JDK 8及更早版本中,`jre`目录包含了运行Java应用程序所需的环境,包括Java虚拟机(JVM)、类库以及其他相关...
1. **Java Runtime Environment (JRE)**:JRE是JDK的基础,提供了运行Java程序所需的环境。它包括Java虚拟机(JVM)、类库以及支持Java程序运行所需的其他文件。JVM是Java程序执行的引擎,负责解释和执行字节码。 2...
6. **弃用的HTTP客户端API(Deprecated HTTP Client API)**:JDK9引入的HttpURLConnection被标记为过时,鼓励开发者使用更现代的HttpClient API。 7. **增强的垃圾收集器(Garbage Collectors)**:包括ZGC和...
1. **编译器优化**:JDK 1.6的编译器进行了显著优化,名为“Client Compiler”和“Server Compiler”的两种编译模式提供更好的性能适应性。Server Compiler在多线程应用中表现出色,而Client Compiler适合轻量级的...
首先,我们要了解Java Development Kit(JDK)。JDK是Java编程语言的基础,它提供了编译、调试和运行Java程序所需的所有工具。在Oracle JDK11中,主要包含以下组件: 1. **Java编译器(javac)**:这是用于将源代码...
标题中的"server-jre-7u80-solaris-i586.tar.gz"揭示了这是一个针对Solaris操作系统,i586架构...同时,根据应用的需求,可能会选择server版或client版的JRE,前者适合处理大量并发请求,后者则更适合轻量级桌面应用。
4. **release文件**:这是一个文本文件,包含了JRE或JDK的具体版本信息,如版本号、构建号等,有助于开发者了解当前环境的详细信息。 5. **conf目录**:通常包含Java的配置文件,如`java.security`定义了安全策略,...
JRE目录下的bin文件夹内有server和client两个文件夹,这两个文件夹包含不同的JVM版本,用以适应不同性能需求的场景。当启动JVM时,它会调用其动态链接库(如jvm.dll),这些库需要位于JVM的父目录中。 总结来说,...
首先,要明确JDK(Java Development Kit)和JRE(Java Runtime Environment)以及JVM之间的关系。JDK是Java的开发工具包,包含了编译器(javac)和运行Java程序所需的JRE。JRE则是运行Java程序所必需的环境,包括...
在性能方面,JDK 1.6的HotSpot JVM引入了Client和Server两种模式,分别针对桌面应用和服务器环境优化。Server模式下,JVM会启动更复杂的优化策略,提高大型应用的性能。 此外,JDK 1.6还增强了异常处理,提供了更...