java sdk 与 jdk有啥区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java sdk 与 jdk有啥区别相关的知识,希望对你有一定的参考价值。
请问电脑上装sdk和jdk 有什么区别 sdk中包含有jdk吗
都可以用来编译java程序吗 为什么sdk比jdk大很多
SDK是Software Development Kit的缩写,中文意思是“软件开发工具包”。这是一个覆盖面相当广泛的名词,可以这么说:辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做“SDK”。SDK是一系列文件的组合,它为软件的开发提供一个平台(它为软件开发使用各种API提供便利)。
JDK(Java Development Kit,Java开发工具包)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK(Software development kit)。可以认为jdk只是sdk的一种(子集),因为它是开发java程序的一个平台,开发其他程序的sdk可以没有jdk。比如你下载了一个软件开发平台 eclipse-SDK-3.2.2-win32.zip,它本身里面是没有jdk的。但是只要开发java程序就必须使用jdk(javaee和javase)。 参考技术A 您好,java sdk 和jdk 其实说的是同一个东西。
JDK 是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握 JDK是学好Java的第一步。最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发 的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。其中IBM的JDK包含的JVM(Java Virtual Machine)运行效率要比Sun JDK包含的JVM高出许多。而专门运行在x86平台的Jrocket在服务端运行效率也要比Sun JDK好很多。但不管怎么说,我们还是需要先把Sun JDK掌握好。 〔来自百度百科〕
SDK 就是 Software Development Kit 的缩写,中文意思就是“软件开发工具包”。这是一个覆盖面相当广泛的名词,可以这么说:辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做“SDK”。 参考技术B JDK = Java Developer's Kit java开发工具包
SDK = Software Development Kit 软件开发工具包
JDK是一种SDK本回答被提问者和网友采纳 参考技术C Java EE SDK和JDK的区别如下:
SDK是Software Development Kit的缩写,中文意思是“软件开发工具包”。这是一个覆盖面相当广泛的名词,可以这么说:辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做“SDK”。SDK是一系列文件的组合,它为软件的开发提供一个平台(它为软件开发使用各种API提供便利)。
JDK(Java Development Kit,Java开发工具包)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK(Software development kit)。可以认为jdk只是sdk的一种(子集),因为它是开发java程序的一个平台,开发其他程序的sdk可以没有jdk。比如自己下载了一个软件开发平台 eclipse-SDK-3.2.2-win32.zip,它本身里面是没有jdk的。但是只要开发java程序就必须使用jdk(javaee和javase)。
Java 9 中的 --add-exports 和 --add-opens 有啥区别?
【中文标题】Java 9 中的 --add-exports 和 --add-opens 有啥区别?【英文标题】:What's the difference between --add-exports and --add-opens in Java 9?Java 9 中的 --add-exports 和 --add-opens 有什么区别? 【发布时间】:2017-10-18 18:41:13 【问题描述】:由于新的模块系统,Java 9 (jdk-9+170) 默认情况下不允许应用程序查看 JDK 中的所有类,这与所有以前的 Java 版本不同。
为了解决这个问题,java
命令行提供了一个新参数--add-exports
,它允许打破封装,如下所示:
java -jar josm.jar --add-exports java.base/sun.security.util=ALL-UNNAMED --add-exports java.base/sun.security.x509=ALL-UNNAMED
JEP 261 对此进行了很好的解释。
我已经阅读了使用相同语法的类似选项--add-opens
,但尚未更新 JEP 261 来描述它(最后更新:2017/03/08 13:58)。
这两个选项有什么区别?
编辑:JEP 261 已于 2017-09-22 更新以解释它。
【问题讨论】:
【参考方案1】: 使用--add-exports
导出包,这意味着其中的所有公共类型和成员都可以在编译和运行时访问。
使用--add-opens
打开包,这意味着其中的所有类型和成员(不仅是公共的!)都可以在运行时访问。
所以在运行时的主要区别是--add-opens
允许“深度反射”,即非公共成员的访问。您通常可以通过调用setAccessible(true)
的反射代码来识别这种访问。
【讨论】:
值得补充的是,在运行时-add-opens
暗示-add-exports
这两个项目符号描述了--add-opens
可以访问的类型/成员是--add-exports
的超集,所以我不认为说一个暗示另一个会给描述增加任何价值。
现在在 JEP 261 中解释了这一点,因为 Mark 今天更新了页面:openjdk.java.net/jeps/261
查找哪个模块提供哪个包的命令:java --list-modules | tr @ " " | awk ' print $1 ' | xargs -n1 java -d
模块的名称将显示为带有@,而没有它的包的名称
--add-opens
只关心反射,这是一个运行时概念,因此该标志不适用于编译器。以上是关于java sdk 与 jdk有啥区别的主要内容,如果未能解决你的问题,请参考以下文章