当前位置:首页 » 编程软件 » openjdkwindows编译

openjdkwindows编译

发布时间: 2024-07-03 22:39:46

‘壹’ jdk是什么

JDK全称java Development ToolKit,是Java语言开发工具包。JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。

最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了属于自己的JDK。IBM公司开发了属于自己的JDK,国内淘宝也开发了属于自己的JDK,各个组织开发自己的JDK都是为了在某些方面得到一些提高,以适应自己的需求。

JDK是用于构建在 Java 平台上发布的应用程序、applet 和组件的开发环境。它不提供具体的开发软件,它提供的是无论你用何种开发软件写Java程序都必须用到的类库和Java语言规范。

(1)openjdkwindows编译扩展阅读:

JDK版本的 变迁史及其选择。

Java语言自JDK1.0版本以来经历了许多次更新,也在基本程序库中增加了大量的类别和包。除了语言上的变化,多年来Java标准库(JCL)发生了巨大的变化,从JDK 1.0中的几百个类暴增到J2SE 5中的三千多个类。

Swing、Java2D等的全新API被加入其中,而许多原本JDK 1.0的类和方法已被弃用。当然,仍然有一些程序可以将Java程序从新版本的Java平台转换为较旧版本(例如Java 5.0降转到1.4)。

2017年9月,Java平台的主架构师 Mark Reinhold 发出提议,要求将Java的功能更新周期从之前的每两年一个新版本缩减到每六个月一个新版本。该提议获得了通过,并在提出后不久生效。

Java 8 与 Java 11 为当前提供支持的LTS(长期支持)版本;Java 10 是上一个快速发布版本,且已不再被支持。2018年9月,随着 Java 11 的发布,Java 10 自当日起不再被支持。

Oracle 将在 2019 年 1 月前为商业用途中的 Java 8 长期支持,而针对非商用的更新将继续提供,直至 2020 年 12 月。

此外,AdoptOpenJDK 也为 Java 8 提供免费更新。针对 Java 11 的长期支持将不再由 Oracle 提供,而是改由OpenJDK社区的 AdoptOpenJDK 提供。

版本选择的问题,1.7、1.8、1.9都是成熟版本,原则上都可以选用。国内公司的商业项目jdk一般不轻易升级,1.9用的就比较少了,加上配套框架升级速度的考虑,1.9版本第二推荐位。

1.8和1.7的应用都比较广泛了,那自然选更新更高级的版本。所以,最推荐用1.8版本。JDK11除非只想从语言层面去体验新功能,还是不要在实际业务开发中用。

参考资料来源:网络——JDK

‘贰’ 怎么编译并调试 openjdk 源代码

环境构建需要的工具
1.cygwin 工具。这个工具的主要用处是为了在window平台上模拟出一个unix虚拟环境。
为了能够在window下编译openJDK,我们需要手动安装的工具如下:
Devel:binutils,make.
Interpreters:m4
Utils:cpio,awk,file(我在安装的过程中,没找到awk包和file包,可能是版本的问题。)
Archive:zip,unzip
System:procps
以上提供的键值对说明:(前面是文件名:包名)
2.安装编译器,我选用的编译器是VS2010,因为这个编译器中包好了windows SDK v7.0a,否则还要自己去下载这个SDK
(cygwin和vs2010安装后都会在操作系统的path环境变量中加入自己的bin目录路径,必须保证VS2010的bin目录在 cygwin的bin目录之前,因为这两个软件的bin目录中各自都有一个连接器“link.exe”,但是只有VS2010中的连接器可以完成 openJDK的编译)
3.下载一个已经编译好的JDK。
4.最后一步就是下载一个Apache ANT,JDK中的java代码部分都是使用ANT脚本进行编译的,ANT版本要求在1.6.5以上。
5.准备依赖项。
由于OpenJDK中的源码没有100%开源,但是在编译JDK的时候,我们又需要这部分闭源包,官方称为“JDK plug”。这部分闭源包可以从Source Releases页面下载。在windows平台下,其是以jar包的形式存在的。通过下面的命令就可以安装
java -jar jdk-7-ea-plug-b121-windows-i586-09_dec_1010.jar
运行后就会出现提示框,点击accept接受协议,然后安装到指定目录即可。
安装完成后建立一个环境变量“ALT_BINARY_PLUGS-PATH”,变量值为安装的JDK plug的安装路径,后面编译的时候需要它
6.安装一个大于2.3版本的FreeType,这是一个免费的字体渲染库。JDK的Swing部分和JConsole这类工具要使用到它。安装好后建立两个环境变量“ALT_FREETYPE_LIB_PATH”和“ALT_FREETYPE_HEADERS_PATH”,分别指向FreeType安装目录下的bin目录和include目录。另外还有一点官方文档没有提到但必须要做的事情是把FreeType的bin目录加入到PATH环境变量中。
7.下载Microsoft DirectX 9.0 SDK(Summer 2004),安装后大约有298MB,在微软官方网站上搜索一下就可以找到下载地址,它是免费的。安装后建立环境变量“ALT_DXSDK_PATH”指向DirectX 9.0 SDK的安装目录
8.去寻找一个名为“MSVCR100.DLL”的动态链接库,如果读者在前面安装了全套的Visual Studio 2010,那这个文件在本机就能找到,否则上网搜索一下也能找到单独的下载地址,大概有744KB。建立环境变量“ALT_MSVCRNN_DLL_PATH”指向这个文件所在的目录。如果读者选择的是VS2003,这个文件名应当为“MSVCR73.DLL”,应该在很多软件中都包含有这个文件,如果找不到的话,前面下载的“Bootstrap JDK”的bin目录中应该也有一个,直接拿来用吧。

‘叁’ openJDK 编译的jar包和oracleJDK编译的能通用吗

在此,Oracle与OpenJDK之间的区别
他是从组织、开源、市场等角度比较的,我这里主要从开源、前景、相关源码底层…等等角度分析,有兴趣的朋友可以一起来建议,学习

一、前景
这里我只能抛出几个疑问点,欢迎大家一起来解决,抛出疑问

1、为什么 Docker 容器的Java环境,几乎都是 openJdk ?

2、其实ORACLE jdk是开放了大部分源码的,openJDK是开放所有源码的,迄今我所想看到的实现,在Oracle JDK中都是开放源码的,Oracle JDK没有开放的部分在哪里?
答:已解决,Oracle JDK 没有开放的源码,在openJDK中的实现,这里先说明一下,OracleJDK只开放了不到7%,后面我会摘录部分,只是部分哈,有兴趣可以安装一个OpenJDK比较一下区别

3、为什么 OpenJDK开源了 OracleJDK不想开源的东西,

二、开源
open-source,开源,这是一种共享,集智的概念

openJDK 是对外开放源码的,Oracle JDK则没有(部分开源)

三、相关底层架构,实现比较
这里就windows版本分析

3.1-1、Oracle JDK架构1
安装包就一个,如图,官网地址
在这里插入图片描述

3.1-2、Open JDK架构1
链接地址,在此
如下图
在这里插入图片描述
这里比较出 openJDK的JRE和JDK是分开放的

3.2 Oracle JDK 与 Open JDK 目录结构比较
在这里插入图片描述

这里看得出 Oracle JDK 是基于 SDK(Jar)进行版本的维护的,部分提供了源码集
OpenJDK 是基于 package 进行版本维护,提供了所有的源码集,目录更清晰,部分实现还变更于与Oracle JDK 不同的包下,后面我摘出部分事例参考

还要注意 IntelliJ IDEA 中也集成了部分的 SDK,注意开发时确保正确的开发环境

3.3 JVM
openJDK已经不显示 JVM了

在这里插入图片描述

3.4 不同的命令行操作
在这里插入图片描述

四、常用对象的不同的实现(OracleJDK源码在OpenJDK中的不同实现)
摘录部分,常用对象,这里总结会有点乱(我还没仔细地观察真正的源码区别)

4.1、Object
在这里插入图片描述

4.2、ArrayLi

热点内容
人生的脚本图片 发布:2024-11-26 10:22:32 浏览:499
winform源码下载 发布:2024-11-26 10:11:57 浏览:985
猫咪国外访问 发布:2024-11-26 09:32:05 浏览:618
威立信监控原始密码是多少 发布:2024-11-26 09:24:06 浏览:489
超凡先锋选择不了服务器该怎么办 发布:2024-11-26 09:15:56 浏览:338
搭建ff服务器喝茶 发布:2024-11-26 09:10:09 浏览:847
乐山云服务器公司 发布:2024-11-26 08:59:44 浏览:955
ftp工具可以上传吗 发布:2024-11-26 08:55:04 浏览:571
压缩量密封 发布:2024-11-26 08:52:10 浏览:583
java把一个list 发布:2024-11-26 08:38:38 浏览:587