OpenJDK

写 Java 这么久了,来编译个 JDK 玩玩儿吧

对着背影说爱祢 提交于 2020-01-09 11:15:57
你每天写的 Java 代码都需要 JDK 的支持,都要跑在 JVM 上,难道你就不好奇 JDK 长什么样子吗。好奇,就来编译并实现一个自己的 JDK 吧。 本次编译环境 macOS 10.12,编译的是 JDK 11 版本。 安装 OpenJDK 11 编译 OpenJDK 需要先在机器上安装 OpenJDK 10 或者 OpenJDK 11,作为 Boot JDK。 先安装 openJDK 11 编译需要,可以到 adoptopenjdk 网站去下载。 pkg 格式安装 进入页面 https://adoptopenjdk.net/index.html?variant=openjdk11&jvmVariant=hotspot 直接下载下载,然后双击就可以完成安装了。 tar.gz 格式安装 1、进入页面 https://adoptopenjdk.net/installation.html?variant=openjdk11&jvmVariant=hotspot#x64_mac-jdk 下载 tar.gz 包 2、解压 tar -xf OpenJDK11U-jdk_x64_mac_hotspot_11.0.5_10.tar.gz 解压后是一个 macOS 包,可通过右键->显示包内容查看里面的文件。 3、加入环境变量 PATH 中,当然如果你使用其他版本的 JDK 作为开发使用

openJDK之如何下载各个版本的openJDK源码

你说的曾经没有我的故事 提交于 2020-01-08 18:53:28
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 如果我们需要阅读openJDK的源码,那么需要下载,那么该去哪下载呢? 现在JDK已经发展到版本10了,11已经处于计划中,如果需要特定版本的openJDK,它们的下载链接在哪呢? 1.openJDK的项目 链接: http://hg.openjdk.java.net/ ,如下图1所示 图1 可以看到有openJDK6、openJDK7、openJDK8、openJDK9、openJDK10 2.下载openJDK源码 以下载openJDK8为例。 2.1 点击图1中的jdk8u,就得到如下图2所示 图2 可以看到JDK8的各个小版本 2.2 以下载openJDK8u60为例 2.2.1 点击图2中jdk8u60下面的jdk链接,如下图3所示: 图3 点击红框中的"jdk"下载openJDK8u60源码 点击之后,得到的是如下图4所示: 图4 如上图4所示,是不是看着很乱,不知道点哪,不急,看下面的步骤。 2.2.2 点击"browse"链接,如下图5所示 图5 点击"browse"链接 之后得到如下图6所示: 图6 在图5中点击"browse"之后 2.2.3 点击图6中的"zip"链接 如下图7所示: 图7 点击"zip"就触发下载了,得到的是个zip压缩包 3. 解压下载得到的zip压缩包 如下图8所示

openJDK源码各版本下载教程

二次信任 提交于 2020-01-08 18:43:40
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> JDK各个版本的源码下载教程 openJDK源码各版本下载教程 jdk各版本源码及项目资源 下载(以jdk8为例) 解压 openJDK源码各版本下载教程 jdk各版本源码及项目资源 请访问openjdk 下载(以jdk8为例) 选择jdk8并点击进去 点击jdk进去相应的源码中 点击browse windows下载zip, mac/linux下载gz, 根据自己的操作系统下载即可 解压 解压后代码结构, src/share/classes/java目录下就是平时使用的JDK类库的源码 导入编辑器可经常查看jdk源码, 学习底层知识 ———————————————— 版权声明:本文为CSDN博主「MrBoringBigFish」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_36522306/article/details/94398868 来源: oschina 链接: https://my.oschina.net/newchaos/blog/3154999

微软宣布加入 OpenJDK,打不过就改变 Java 未来!

我的未来我决定 提交于 2020-01-06 18:33:30
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> <figure data-block="true" data-editor="6jkbq" data-offset-key="dk95m-0-0" contenteditable="false"> </figure> 近日,微软的 Bruno Borges 在 OpenJDK 邮件列表中发布了一条消息,内容包含接下来发生的事情以及微软如何开始将其团队整合到 OpenJDK 社区。在邮件中,Bruno Borges 提到,微软已正式签署《Oracle 贡献者协议》。同时,他重申了微软对 Java 的承诺,以及微软团队对回馈 Java 社区的期待。Borges 曾经是 Oracle 开发人员,现在担任微软 Java 的首席产品经理。他向大家介绍了 Java 工程团队负责人 Martijn Verburg,Verburg 同时也是 jClarity 的首席执行官,而 jClarity 是 AdoptOpenJDK 的主要贡献者,于今年 8 月被微软收购。该邮件可以在 OpenJDK 邮件列表中找到:嗨,OpenJDK 社区, 在过去的一周中,微软正式签署了《Oracle 贡献者协议》,甲骨文公司对我们参与该项目表示了认可及欢迎。我代表微软 Java 工程团队,很高兴正式加入 OpenJDK 项目,并期待与你们的合作。

Is JavaFX supported in Openjdk?

别说谁变了你拦得住时间么 提交于 2020-01-06 14:53:45
问题 Does OpenJDK 8 includes JavaFX support like Oracle Java does? I know there is package (at least for Ubuntu) called OpenJFX, but I'm not sure why that's not included in OpenJDK 8 回答1: Yes, you can. Java is platform-agnostic. By the way you can also use Oracle JDK on Linux. 回答2: The word "supported" means different things to different people. Here is the official JavaFX Supported Configurations page which describes the various platforms on which JavaFX2 is "certified". The page makes no mention

什么是原始类型,为什么我们不应该使用它呢?

a 夏天 提交于 2020-01-06 14:10:45
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 问题: Java中的原始类型是什么?为什么我经常听到不应该在新代码中使用它们的信息? 如果我们不能使用原始类型,那有什么选择呢?有什么更好的选择? #1楼 原始类型是没有任何类型参数的泛型类或接口的名称。 例如,给定通用Box类: public class Box<T> { public void set(T t) { /* ... */ } // ... } 要创建 Box<T> 的参数化类型,请为形式类型参数 T 提供一个实际的类型参数: Box<Integer> intBox = new Box<>(); 如果省略实际类型参数,则创建 Box<T> 的原始类型: Box rawBox = new Box(); 因此, Box 是通用类型 Box<T> 的原始类型。 但是,非泛型类或接口类型不是原始类型。 原始类型显示在旧版代码中,因为在JDK 5.0之前,许多API类(例如Collections类)不是通用的。 使用原始类型时,您实际上会获得泛型行为 Box 为您提供 Object 。 为了向后兼容,允许将参数化类型分配给其原始类型: Box<String> stringBox = new Box<>(); Box rawBox = stringBox; // OK 但是,如果将原始类型分配给参数化类型

Spark - UbuntuVM - insufficient memory for the Java Runtime Environment

倾然丶 夕夏残阳落幕 提交于 2020-01-05 15:19:00
问题 I'm trying to install Spark1.5.1 on Ubuntu14.04 VM. After un-tarring the file, I changed the directory to the extracted folder and executed the command "./bin/pyspark" which should fire up the pyspark shell. But I got an error message as follows: [ OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c5550000, 715849728, 0) failed; error='Cannot allocate memory' (errno=12) There is insufficient memory for the Java Runtime Environment to continue. Native memory allocation

Spark - UbuntuVM - insufficient memory for the Java Runtime Environment

僤鯓⒐⒋嵵緔 提交于 2020-01-05 15:18:52
问题 I'm trying to install Spark1.5.1 on Ubuntu14.04 VM. After un-tarring the file, I changed the directory to the extracted folder and executed the command "./bin/pyspark" which should fire up the pyspark shell. But I got an error message as follows: [ OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c5550000, 715849728, 0) failed; error='Cannot allocate memory' (errno=12) There is insufficient memory for the Java Runtime Environment to continue. Native memory allocation

Size of Java object

試著忘記壹切 提交于 2020-01-05 15:06:21
问题 How is it possible that minimal size of Java object is 8 bytes (only the object header), What is the memory consumption of an object in Java? if in the C++ class representing the java object, http://hg.openjdk.java.net/jdk7/jdk7/hotspot/file/9b0ca45cd756/src/share/vm/oops/oop.hpp i can see that the class has more members class oopDesc { friend class VMStructs; private: volatile markOop _mark; // this is the object header union _metadata { wideKlassOop _klass; narrowOop _compressed_klass; }

Java虚拟机1:什么是Java

别说谁变了你拦得住时间么 提交于 2020-01-03 03:11:49
前言 让我们来看一下Java的广告词,来自 http://www.java.com/zh_CN/about/ : 97%的企业桌面运行Java 美国有89%的桌面(或计算机)运行Java 全球有900万Java开发人员 开发人员的头号选择 排名第一的部署平台 有30亿部移动电话运行Java 100%的蓝光盘播放器附带了Java 有50亿张Java卡在使用 1.25亿台TV设备运行Java 前5个原始设备制造商均提供了Java ME 很牛逼不是吗?OK,这么牛逼的背后,我们Java开发人员有想过每天和我们朝夕相处的Java到底是什么呢?当然,很多人脑海里第一反应一定是,Java不就是一门编程语言吗,咱们每天写代码的语言啊。当然,这么说也是对的,只是Java实际包含的面更广,一起往下来看下。 什么是Java 经过了多年的发展,Java早已由一门单纯的计算机编程语言,演变为了一套强大的 技术体系 。 是的,什么是Java,我想技术体系四个字应该是最好的概括了吧。Java设计者们将Java划分为3种结构独立但却彼此依赖的技术体系分支,它们分别对应着不同的规范集合和组件: 1、Java SE(标准版),主要活跃在桌面领域,主要包含了Java API组件。 2、Java EE(企业版),活跃在企业级领域,除了包含Java API组件外,还扩充有Web组件、事务组件、分布式组件、EJB组件