文档章节

centos7 mini 系统openjdk9源码编译

骰子红豆豆
 骰子红豆豆
发布于 2018/04/16 01:29
字数 1690
阅读 370
收藏 3

前提先看完这篇博文https://my.oschina.net/u/3829817/blog/1795177

openjdk的来源

根据GNU协议又称革奴计划,是由Richard Stallman在1983年9月27日公开发起的。它的目标是创建一套完全自由的操作系统。Richard Stallman最早是在net.unix-wizards新闻组上公布该消息,并附带《GNU宣言》等解释为何发起该计划的文章,其中一个理由就是要“重现当年软件界合作互助的团结精神”。为保证GNU软件可以自由地“使用、复制、修改和发布”,所有GNU软件都有一份在禁止其他人添加任何限制的情况下授权所有权利给任何人的协议条款,GNU通用公共许可证(GNU General Public License,GPL)。即“反版权”(或称Copyleft)概念。故Sun公司于2009年4月15日正式发布OpenJDK。甲骨文在 2010 年收购Sun之后接管了这个项目。

Oracle JDK只发布二进制安装包,而OpenJDK只发布源码。

学习openjdk的必要性

冯·诺依曼机原理

  • 计算机由运算器、控制器、存储器、输入设备和输出设备五部分组成。
  • 采用存储程序的方式,程序和数据放在同一个存储器中,指令和数据一样可以送到运算器运算,即由指令组成的程序是可以修改的。
  • 数据以二进制代码表示。
  • 指令由操作码地址码组成。
  • 指令在存储器中按执行顺序存放,由指令计数器指明要执行的指令所在的单元地址,一般按顺序递增,但可按运算结果或外界条件而改变。
  • 机器以运算器为中心,输入输出设备与存储器间的数据传送都通过运算器。

 由此我们得知计算机上设备的运行是需要二进制代码也就是0,1组合,而计算机处理运算的部分是运算器与控制器也就是现在的微处理器CPU,所以就有了机器码,机器码是给CPU下达指令的,机器识别很容易,而人通过机器码编程太过复杂,于是聪明的人类将机器码0001,0010这种二进制码映射成固定的符号,比如0001代表read,0010代表add,于是就有了汇编语言,汇编语言形成的操作指令就是CPU的操作指令,所以每个CPU都有自己的操作规范,于是就有了8086处理器,Intel 1978年推出的Intel 8086中央处理器中首度出现,它是从Intel 8008处理器中发展而来的,而8008则是发展自Intel 4004的。8086在三年后为IBM PC所选用,之后x86便成为了个人计算机的标准平台,成为了历来最成功的CPU架构。 

8086是16位处理器;后续有了32位的80386处理器,直到2003年AMD对于这个架构发展了64位的扩充,并命名为AMD64。后来Intel也推出了与之兼容的处理器,并命名为Intel 64。两者一般被统称为x86-64x64,开创了x86的64位时代。这里16位32位64位代表的是寄存器的个数。

一来基于x86架构形成的指令集对于人类还是太复杂,二来每个CPU在指令集上都会有所不同,这样基于某个CPU写出来的软件只能给特定的CPU使用,于是在基于x86架构的指令集上开始诞生了汇编语言,汇编语言对人还是不太友好,于是人类又发明高级语言,比如C , C++语言,这样高级语言和汇编语言直接映射指令集,于是在这种映射之间就诞生了编译器,这就是编译原理。

(source language)源程序→编译器 →目标机器代码程序(object code

后来人类又发明了面向对象的编程语言,这种语言更贴合人的思维逻辑,于是主角诞生了--java超高级语言

后来sun公司的程序猿通过JNI将JAVA,C,C++封装在一起就形成JDK,JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。于是在2009年,sun公司将jdk源码公布于众,openjdk就这样诞生了。

openjdk的编译

本人编译的是openjdk9

openjdk9源码地址http://hg.openjdk.java.net/jdk9

这是一个版本树,基于Mercurial搭建的一个代码托管平台,类似于github开源中国的码云

打开本地的centos7虚拟机,请确保本地电脑联网并且网速要很好。网速差就找个网速很好的地方,否则你会哭的。我已经哭过了。

yum install mercurial

下载openjdk9的编译指南项目源码,这个源码下都是需要编译和下载openjdk9源码的bash脚本和编译指南

openjdk9指南项目下载地址http://hg.openjdk.java.net/jdk9/jdk9/

点击zip下载到本地

然后解压zip包进入到\common\doc的目录下

用浏览器打开building.html并翻译成中文

然后根据指南开始你的表演

最好通过root权限登录centos7虚拟机

clone指南项目到/opt目录下 

hg clone http://hg.openjdk.java.net/jdk9/jdk9
cd jdk9
bash get_source.sh

请保持耐心等待源码下载完成

下载编译器,外部库和头文件

sudo yum groupinstall "Development Tools"

然后安装引导jdk8

sudo yum install java-1.8.0-openjdk-devel

运行配置参数

bash configure --with-target-bits=64 --disable-warnings-as-errors --with-debug-level=slowdebug --with-boot-jdk=/usr/jdk1.8.0_161

将这个--with-boot-jdk=/usr/jdk1.8.0_161修改为自己的jdk绝对路径

编译openjdk9源码

make images

 进入到根目录下将jdk环境变量修改成自己的路径./build/*/images/jdk/

vi /etc/profile
source /etc/profile
java -version

验证成功

现在开始openjdk9的调试吧!

© 著作权归作者所有

骰子红豆豆
粉丝 4
博文 6
码字总数 8202
作品 0
西安
程序员
私信 提问
Mac OSX 10.10 Yosemite编译OpenJDK 9

在Mac OSX 10.10系统上编译了下OpenJDK9,以下仅是个人安装记录,供参考。 编译时间:2015-06-13 系统版本:Mac OS X Yosemite 10.10.4 编译OpenJDK版本:JDK 9 相关软件版本: XCode版本:X...

易水瑶
2015/06/13
4K
2
Linux 安装python3.7.0

我这里使用的时centos7-mini,centos系统本身默认安装有python2.x,版本x根据不同版本系统有所不同,可通过 python --V 或 python --version 查看系统自带的python版本 有一些系统命令时需要...

宿夜孤妖
2018/07/28
0
0
openJDK之JDK9的String

衷心建议读者阅读源码,这篇内容比较简单。 openJDK9开始,String的底层实现不一样了,具体内容如下。 1.openJDK8的String 先来看下openJDK8的String的底层,如下图1.1所示: 图1.1 底层上使...

克虏伯
2018/09/26
117
0
手动制作mini linux详细步骤—之二

8.2.3、编译mini linux网卡驱动模块 对于网卡驱动,我们是通过在内核中设置为模块形式来动态加载,所以需要再次针对单个内核模块进行编译,编译单个内核模块使用如下命令: # cd /usr/src/li...

zzjiwang
2017/09/18
0
0
Jshell

一 、安装jdk9 方法一 sudo apt install openjdk-9-jdk-headless 方法二 下载jdk9: hg clone http://hg.openjdk.java.net/jdk9/jdk9 openjdk9 cd openjdk9 && sh ./get_source.sh # 编译 ba......

杜鹏程
2016/10/11
39
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
今天
5
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
11
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
12
0
PhotoShop 色调:RGB/CMYK 颜色模式

一·、 RGB : 三原色:红绿蓝 1.通道:通道中的红绿蓝通道分别对应的是红绿蓝三种原色(RGB)的显示范围 1.差值模式能模拟三种原色叠加之后的效果 2.添加-颜色曲线:调整图像RGB颜色----R色增强...

东方墨天
昨天
11
1
将博客搬至CSDN

将博客搬至CSDN

算法与编程之美
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部