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

编译openjdk8

发布时间: 2022-08-07 00:36:33

❶ openjdk-8-jdk-headless 什么版本

OpenJDK8是JDK的开放源码版本,以GPL(General Public License,通用性公开许可证)协议的形式放出。因为授权协议的原因,Sun公司实现的JDK的一部分源码因为产权的问题无法开放OpenJDK使用。因此相比于JDK,OpenJDK的源码只包含了最精简的JDK。

openjdk是jdk的开放原始码版本,以GPL协议的形式放出。在JDK7的时候,openjdk已经成为jdk7的主干开发,sun jdk7是在openjdk7的基础上发布的,其大部分原始码都相同。

只有少部分原始码被替换掉。使用JRL(javaResearch License,Java研究授权协议)发布。

至于openjdk6则更是有其复杂的一面,首先是openjdk6是jdk7的一个分支,并且尽量去除Java SE7的新特性,使其尽量的符合Java6的标准。

(1)编译openjdk8扩展阅读:

DK和OpenJDK的区别,可以归纳为以下几点:

1、授权协议的不同

openjdk采用GPL V2协议放出,而JDK则采用JRL放出。两者协议虽然都是开放源代码的,但是在使用上的不同在于GPL V2允许在商业上使用。

而JRL只允许个人研究使用。OpenJDK不包含Deployment(部署)功能。

部署的功能包括:Browser Plugin、Java Web Start、以及Java控制面板,这些功能在Openjdk中是找不到的。

2、OpenJDK源代码不完整

这个很容易想到,在采用GPL协议的Openjdk中,sun jdk的一部分源代码因为产权的问题无法开放openjdk使用,其中最主要的部份就是JMX中的可选元件SNMP部份的代码。

因此这些不能开放的源代码将它作成plug,以供OpenJDK编译时使用,你也可以选择不要使用plug。

而Icedtea则为这些不完整的部分开发了相同功能的源代码(OpenJDK6),促使OpenJDK更加完整。

3、部分源代码用开源代码替换

由于产权的问题,很多产权不是SUN的源代码被替换成一些功能相同的开源代码,比如说字体栅格化引擎,使用Free Type代替。

4、openjdk只包含最精简的JDK

OpenJDK不包含其他的软件包,比如Rhino Java DB JAXP……,并且可以分离的软件包也都是尽量的分离,但是这大多数都是自由软件,你可以自己下载加入。

5、不能使用Java商标

这个很容易理解,在安装openjdk的机器上,输入“java -version”显示的是openjdk,但是如果是使用Icedtea补丁的openjdk,显示的是java。(未验证)

总之,在Java体系中,还是有很多不自由的成分,源代码的开发不够彻底,希望Oracle能够让JCP更自由开放一些,这也是所有Java社区所希望的。



❷ 编译openjdk8怎么解决这两个问题

rm -f libjvm.so.1; ln -s libjvm.so libjvm.so.1; \
[ -f libjvm.so ] || { ln -s libjvm.so libjvm.so; ln -s libjvm.so.1 libjvm.so.1; }; \
if [ \"\" = \"\" ] ; then \
if [ -x /usr/sbin/selinuxenabled ] ; then \
/usr/sbin/selinuxenabled; \
if [ $? = 0 ] ; then \
/usr/bin/chcon -t textrel_shlib_t libjvm.so; \
if [ $? != 0 ]; then \
echo "ERROR: Cannot chcon libjvm.so"; \
fi \

❸ ubuntu16.04编译openjdk8需要安装什么软件

请确保你下载的JDK版本与操作系统相对应。 2.转到你下载路径,对下载后的文件解压缩,比如我下载的文件名为jdk-7u7-linux-i586.tar.gz cd xxx(你的下载路径) sudo tar zxvf jdk-7u7-linux-i586.tar.gz 3.要将解压缩出来的文件夹拷贝到/usr/lib/j

❹ openjdk和oraclejdk有什么区别吗

首先要先明确之间,以及OpenJDK 6、OpenJDK 7、OpenJDK 7u和OpenJDK 8等项目之间是什么关系,这有助于确定接下来编译要使用的JDK版本和源码分支。
从前面介绍的Java发展史中我们了解到OpenJDK是Sun在2006年末把Java开源而形成的项目,这里的“开源”是通常意义上的源码开放形式,即源码是可被复用的,例如IcedTea、UltraViolet都是从OpenJDK源码衍生出的发行版。但如果仅从“开源”字面意义(开放可阅读的源码)上看,其实Sun自JDK 1.5之后就开始以Java Research License(JRL)的形式公布过Java源码,主要用于研究人员阅读(JRL许可证的开放源码至JDK 1.6 Update 23为止)。把这些JRL许可证形式的Sun/OracleJDK源码和对应版本的OpenJDK源码进行比较,发现除了文件头的版权注释之外,其余代码基本上都是相同的,只有字体渲染部分存在一点差异,Oracle JDK采用了商业实现,而OpenJDK使用的是开源的FreeType。当然,“相同”是建立在两者共有的组件基础上的,Oracle JDK中还会存在一些Open JDK没有的、商用闭源的功能,例如从JRockit移植改造而来的Java Flight Recorder。预计以后JRockit的MissionControl移植到HotSpot之后,也会以Oracle JDK专有、闭源的形式提供。
Oracle的项目发布经理Joe Darcy在OSCON 2011上对两者关系的介绍也证实了OpenJDK 7和Oracle JDK 7在程序上是非常接近的,两者共用了大量相同的代码(如下图,注意图中提示了两者共同代码的占比要远高于图形上看到的比例),所以我们编译的OpenJDK,基本上可以认为性能、功能和执行逻辑上都和官方的Oracle JDK是一致的。
Dalvik 与java虚拟机:
1.java虚拟机基于栈。 基于栈的机器必须使用指令来载入和操作栈上数据,所需指令更多更多 .
而dalvik虚拟机是基于寄存器的:java虚拟机运行的是java字节码。
(java类会被编译成一个或多个字节码.class文件,打包到.jar文件中,java虚拟机从相应的.class文件和.jar文件中获取相应的字节码)2.Dalvik和Java之间的另外一大区别就是运行环境——Dalvik经过优化,允许在有限的内存中同时运行多个虚拟机的实例OpenJDK :
[root@localhost ~]# java -version
java version "1.6.0_39"
OpenJDK Runtime Environment (IcedTea6 1.13.11) (rhel-1.13.11.0.el5_11-x86_64)OpenJDK 64-Bit Server VM (build 23.25-b01, mixed mode)oracle jdk:
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)OpenJDK下载:
http://openjdk.java.net/install/index.htmlJDK 8:yum install java-1.8.0-openjdk
JDK 7:
yum install java-1.7.0-openjdk
JDK 6:yum install java-1.6.0-openjdk
1. HotSpot历史
SUN的JDK版本从1.3.1开始运用HotSpot虚拟机, 2006年底开源,主要使用C++实现,JNI接口部分用C实现。
HotSpot是较新的Java虚拟机,用来代替JIT(Just in Time),可以大大提高Java运行的性能。
Java原先是把源代码编译为字节码在虚拟机执行,这样执行速度较慢。而HotSpot将常用的部分代码编译为本地(原生,native)代码,这样显着提高了性能。
HotSpot JVM 参数可以分为规则参数(standard options)和非规则参数(non-standard options)。
规则参数相对稳定,在JDK未来的版本里不会有太大的改动。
非规则参数则有因升级JDK而改动的可能。
规则和非规则参数这里不做介绍了,网上资料很多。
2.HotSpot基础知识
HotSpot包括一个解释器和两个编译器(client 和 server,二选一的),解释与编译混合执行模式,默认启动解释执行。
编译器:java源代码被编译器编译成class文件(字节码),java字节码在运行时可以被动态编译(JIT)成本地代码(前提是解释与编译混合执行模式且虚拟机不是刚启动时)。
解释器: 解释器用来解释class文件(字节码),java是解释语言(书上这么说的)。
server启动慢,占用内存多,执行效率高,适用于服务器端应用;client启动快,占用内存小,执行效率没有server快,默认情况下不进行动态编译,适用于桌面应用程序。
由-XX:+RewriteFrequentPairs参数控制 client模式默认关闭,server模式默认开启在jre安装目录下的lib/i386/jvm.cfg 文件下。
java -version
Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode, sharing)mixed mode 解释与编译 混合的执行模式 默认使用这种模式java -Xint -version
Java HotSpot(TM) Client VM (build 14.3-b01, interpreted mode, sharing)interpreted 纯解释模式 禁用JIT编译
java -Xcomp -version
Java HotSpot(TM) Client VM (build 14.3-b01, compiled mode, sharing)compiled 纯编译模式(如果方法无法编译,则回退到解释模式执行无法编译的方法)3.动态编译
动态编译(compile ring run-time),英文称Dynamic compilation;Just In Time也是这个意思。
HotSpot对bytecode的编译不是在程序运行前编译的,而是在程序运行过程中编译的。
HotSpot里运行着一个监视器(Profile Monitor),用来监视程序的运行状况。
java字节码(class文件)是以解释的方式被加载到虚拟机中(默认启动时解释执行)。 程序运行过程中,那一部分运用频率大,那些对程序的性能影响重要。对程序运行效率影响大的代码,称为热点(hotspot),HotSpot会把这些热点动态地编译成机器码(native code),同时对机器码进行优化,从而提高运行效率。对那些较少运行的代码,HotSpot就不会把他们编译。
HotSpot对字节码有三层处理:不编译(字节码加载到虚拟机中时的状态。也就是当虚拟机执行的时候再编译),编译(把字节码编译成本地代码。虚拟机执行的时候已经编译好了,不要再编译了),编译并优化(不但把字节码编译成本地代码,而且还进行了优化)。
至于那些程序那些不编译,那些编译,那些优化,则是由监视器(Profile Monitor)决定。
4.为什么不静态编译那?
为什么字节码在装载到虚拟机之前就编译成本地代码那?
动态编译器也在许多方面比静态编译器优越。静态编译器通常很难准确预知程序运行过程中究竟什么部分最需要优化。
函数调用都是很浪费系统时间的,因为有许多进栈出栈操作。因此有一种优化办法,就是把原来的函数调用,通过编译器的编译,改成非函数调用,把函数代码直接嵌到调用出,变成顺序执行。
面向对象的语言支持多态,静态编译无效确定程序调用哪个方法,因为多态是在程序运行中确定调用哪个方法。
jdk 1.9 等价JDK9 J2SE9 JAVA9
jdk 1.8 等价JDK8 J2SE8 JAVA8
jdk 1.7 等价JDK7 J2SE7 JAVA7
jdk 1.6 等价JDK6 J2SE6 JAVA6
jdk 1.5 等价JDK5 J2SE5 JAVA5
jdk 1.4 等价J2SE1.4
jdk 1.3 等价J2SE1.3
jdk 1.2 等价J2SE1.2
jdk 1.1
openjdk源码下载:
Oracle JDK只发布二进制安装包,而OpenJDK只发布源码复制代码
获取OpenJDK源码有两种方式:
第一种方式:
下载OpenJDK7u的源代码:
hg clone http://hg.openjdk.java.net/jdk7u/jdk7u-devcd jdk7u-dev
chmod 755 get_source.sh
./get_source.sh
下载OpenJDK8u的源代码:
hg clone http://hg.openjdk.java.net/jdk8u/jdk8u-devcd jdk8u-dev
./get_source.sh
注意:这是最直接的方式,从版本管理中看变更轨迹比看Release Note效果更好。但不足之处是速度太慢,虽然代码总容量只有300 MB左右,但是文件数量太多,在笔者的网络下全部复制到本地需要数小时。
第二种方式,即直接下载官方打包好的源码包
读者可以从Source Bundle Releases页面(地址:http://jdk7.java.net/source.html)取得打包好的源码,到本地直接解压即可。
一般来说,源码包大概一至两个月左右会更新一次,虽然不够及时,但比起从Mercurial复制代码的确方便和快捷许多。
笔者下载的是OpenJDK 7 Update 6 Build b21版源码包,2012年8月28日发布,大概99MB,解压后约为339MB。
备注:推荐在linux平台或者mac平台上面编译jdk

❺ 自己可以编译安卓源码吗

用最新的Ubuntu 16.04,请首先确保自己已经安装了Git.没安装的同学可以通过以下命令进行安装:

sudo apt-get install git git config –global user.email “[email protected]” git config –global user.name “test”

其中[email protected]为你自己的邮箱.

简要说明

android源码编译的四个流程:1.源码下载;2.构建编译环境;3.编译源码;4运行.下文也将按照该流程讲述.

源码下载

由于某墙的原因,这里我们采用国内的镜像源进行下载.
目前,可用的镜像源一般是科大和清华的,具体使用差不多,这里我选择清华大学镜像进行说明.(参考:科大源,清华源)

repo工具下载及安装

通过执行以下命令实现repo工具的下载和安装

mkdir ~/binPATH=~/bin:$PATHcurl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod a+x ~/bin/repo

补充说明
这里,我来简单的介绍下repo工具,我们知道AOSP项目由不同的子项目组成,为了方便进行管理,Google采用Git对AOSP项目进行多仓库管理.在聊repo工具之前,我先带你来聊聊多仓库项目:

我们有个非常庞大的项目Pre,该项目由很多个子项目R1,R2,...Rn等组成,为了方便管理和协同开发,我们为每个子项目创立自己的仓库,整个项目的结构如下:


这里写图片描述

执行完该命令后,再使用make命令继续编译.某些情况下,当你执行jack-admin kill-server时可能提示你命令不存在,此时去你去out/host/linux-x86/bin/目录下会发现不存在jack-admin文件.如果我是你,我就会重新repo sync下,然后从头来过.

错误三:使用emulator时,虚拟机停在黑屏界面,点击无任何响应.此时,可能是kerner内核问题,解决方法如下:
执行如下命令:

  • ./out/host/linux-x86/bin/emulator -partition-size 1024 -kernel ./prebuilts/qemu-kernel/arm/kernel-qemu-armv7

  • 通过使用kernel-qemu-armv7内核 解决模拟器等待黑屏问题.而-partition-size 1024 则是解决警告: system partion siez adjusted to match image file (163 MB >66 MB)

    如果你一开始编译的版本是aosp_arm-eng,使用上述命令仍然不能解决等待黑屏问题时,不妨编译aosp_arm64-eng试试.

    结束吧

    到现在为止,你已经了解了整个android编译的流程.除此之外,我也简单的说明android源码的多仓库管理机制.下面,不妨自己动手尝试一下.

    ❻ 听说openjdk的性能很烂,是真的吗

    首先要先明确OpenJDK和Sun/OracleJDK之间,以及OpenJDK 6、OpenJDK 7、OpenJDK 7u和OpenJDK 8等项目之间是什么关系,这有助于确定接下来编译要使用的JDK版本和源码分支。

    ❼ 运行环境是openjdk 1.8,我可以用oracle jdk 1.8开发吗

    用jdbc么
    oracle8/8i/9i数据库(thin模式)
    加载驱动:
    class.forname("oracle.jdbc.driver.oracledriver").newinstance();
    设置参数
    string
    url="jdbc:oracle:thin:@localhost:1521:orcl";
    //orcl为数据库的sid
    string
    user="test";
    string
    password="test";
    尝试连接:
    connection
    conn=
    drivermanager.getconnection(url,user,password);

    ❽ 如何交叉编译openjdk 使之能在arm-Linux中运行

    直接下载OpenJDK8源码肯定不通过。有一个专门的移植工程:

    hg clone http://hg.openjdk.java.net/aarch64-port/jdk8/

    hg clone http://hg.openjdk.java.net/aarch64-port/jdk8u/


    这个有时无法下载,使用:

    https://github.com/AdoptOpenJDK/openjdk-aarch64-jdk8u

    关于OpenJDK的编译,这个博客记录最为详细,所有问题都有解决办法:

    网页链接

    ❾ 如何用jdk8编译出能在jre7上跑的软件,我直接编译的放了openjdk7上不能跑。

    只有两种方式
    一,降低jdk的版本
    二,将jdk8中特殊的用法删除

    热点内容
    php锁变量 发布:2024-05-07 02:09:02 浏览:47
    股票涨的算法 发布:2024-05-07 01:59:22 浏览:22
    安卓手机如何关闭英文拼写 发布:2024-05-07 01:45:46 浏览:296
    光介质存储 发布:2024-05-07 01:32:25 浏览:350
    苹果平板ipad密码忘了怎么办 发布:2024-05-07 01:17:16 浏览:704
    伏吟的算法 发布:2024-05-07 00:51:48 浏览:830
    安卓手机上的照相键在哪里 发布:2024-05-07 00:51:45 浏览:606
    ftp如何删除顽固文件 发布:2024-05-07 00:50:57 浏览:251
    idea文件夹显示 发布:2024-05-07 00:30:04 浏览:250
    怎么把ps存储为ai 发布:2024-05-07 00:30:03 浏览:274