1.如何交叉编译openjdk 使之能在arm-Linux中运行
2.如何把github上下载下来的码下maven源代码zip文件打包成可运行的jar文件
3.OpenJDKï¼
4.在谷歌云上高速编译安卓AOSP ROM、驱动、码下内核并完成刷机
5.真·手把手,码下从头教你编译JDK
6.学妹问我:OpenJDK是码下什么?作为师哥,必须万字详解屁颠屁颠奉上
如何交叉编译openjdk 使之能在arm-Linux中运行
直接下载OpenJDK8源码肯定不通过。码下有一个专门的码下管道溯源码移植工程:hg clone /AdoptOpenJDK/openjdk-aarch-jdk8u
关于OpenJDK的编译,这个博客记录最为详细,码下所有问题都有解决办法:
网页链接
如何把github上下载下来的码下maven源代码zip文件打包成可运行的jar文件
1.下载Spring源码
git下载地址:/SpringSource/spring-framework/
2.下载完成后,编译前需满足的码下先决条件
1)当前系统中安装了gradle,如果为安装,码下可以从:/release/STS/3.3.0/dist/e4.3/spring-tool-suite-3.3.0.RELEASE-e4.3-win.zip
直接回车确认即可
4)接着会提示要运行的码下命令是:
./gradlew cleanEclipse :spring-oxm:compileTestJava eclipse -x :eclipse
直接回车确认
5)接下来会自动下载所需的依赖包,等待其下载、码下编译完成即可。码下
编译的码下过程中,第一次编译停留在“> Building > :spring-core:cglibRepackJar”这个提示处很久,码下查看cmd的进程,貌似死了,我将其结束后重新运行,依旧停留在这个地方。
注:在编译过程中,经常出现在下载依赖项时没有响应的情况,需要找到对应的java进程,结束后重新运行,或者直接关闭命令行窗口重新来一次,暂未找到具体原因。
猜测应该和我的网络状况和java环境有关,编译过程中尝试了jdk8的位和位版本,都有这个问题。
在编译多次不成功以后,雕龙 源码我通过运行gradlew.bat install,尝试先把所有的依赖项都先下载下来,在下载子项目相关的依赖项的过程中,仍然会出现命令没有响应的情况,只能一次又一次地关闭,重新运行。
一次又一次编译假死后,终于看到了“BUILD SUCCESS”,再次运行import-into-eclipse.bat,这次运行,跳过了很多之前需要下载的依赖项,应该是运行install命令的时候已经下载过了,但还是有一些仍然需要下载的依赖项。观察输出,会发现首先会下载依赖项所对应的pom文件,接着才会下载对应的jar。应该是和Maven相关的,有时间要把Maven、ant、ivy、gradle这些都看一下。
OpenJDKï¼
openjdkä¸jdkåºå«
1ãOracleJDKåOpenJDKä¹é´çä¸äºä¸»è¦åºå«å¦ä¸ï¼åå¸å¨æOpenJavaæ¯å 个æåå¸ä¸æ¬¡ï¼èOraclejavaæ¯ä¸å¹´åå¸ä¸æ¬¡ãç¨æ·è½å¤è·å¾oracleå¯¹å ¶çæ¬çé¿ææ¯æãèOpenJDK为任ä½çæ¬æä¾æ´æ¹ï¼ç´å°ä¸ä¸ä¸ªçæ¬åå¸ã
2ãææåè®®çä¸åï¼openjdkéç¨GPLV2åè®®æ¾åºï¼èJDKåéç¨JRLæ¾åºã两è åè®®è½ç¶é½æ¯å¼æ¾æºä»£ç çï¼ä½æ¯å¨ä½¿ç¨ä¸çä¸åå¨äºGPLV2å 许å¨åä¸ä¸ä½¿ç¨ï¼èJRLåªå 许个人ç 究使ç¨ã
3ãæ¯ä¸ªé¡¹ç®ç¨å°çä¸è¥¿ä¸åï¼æ以ä¸è½ä¸æ¦è论ï¼OpenJDKä¸SunçJDKåè½é½æ¯ä¸æ ·çï¼åªæ¯çæä¿¡æ¯ä¸ä¸æ ·ãOpenJDKå ¬å¼äºJDKãJVMãJREãJavaç±»åºçæºä»£ç ï¼èSunJDKåªå ¬å¼äºJavaç±»åºçæºä»£ç ã
4ãææåè®®çä¸åï¼OpenJDKéç¨GPLV2åè®®æ¾åºï¼èSUNJDKåéç¨JRLæ¾åºã两è åè®®è½ç¶é½æ¯å¼æ¾æºä»£ç çï¼ä½æ¯å¨ä½¿ç¨ä¸çä¸åå¨äºGPLV2å 许å¨åä¸ä¸ä½¿ç¨ï¼èJRLåªå 许个人ç 究使ç¨ã
5ãopenjdkéç¨GPLV2åè®®ï¼oraclejdkéç¨JRLåè®®ã
è°è°OpenJDKä¸çº¿ç¨ç9ç§ç¶æ
1ãæ£æ¥openjdkæ¯å¦ææ´æ°ï¼å¦ææï¼å¯ä»¥å°è¯æ´æ°openjdkçæ¬ï¼ä»¥è§£å³å¯è½åå¨çbugãæ£æ¥openjdkçé ç½®ï¼å¦ææè¿å¤çé ç½®ï¼å¯ä»¥å°è¯åå°é ç½®ï¼ä»¥åå°openjdkå ç¨cpuçæ åµã
2ã对äºOpenJDKèè¨ï¼æ¯ä¸æ¯æ¯ä¸ªJava线ç¨é½å¯¹åºä¸ä¸ªæ§è¡å¼æ线ç¨è¿ä¸ªæ¹æ³å½ç¶ä¸å¯è¡ãæç»ä½ 举个ä¾åï¼ä½ å»ç«è½¦ç«ä¹°ç¥¨ãçªå£å°±è¿ä¹å¤ï¼æ人æ¥äºå°±æéï¼ä¸ä¼æ¯ä¸ªäººé½æä¸ä¸ªçªå£ã
3ã使ç¨OpenJDKæå åå¿«ç §å¯ä»¥å¸®å©æ们äºè§£ç¨åºçå å使ç¨æ åµï¼ä»¥åæ¾åºå åæ³æ¼çåå ã
openjdkæ¯ä»ä¹1ãåå²ä¸çåå æ¯ï¼openjdkæ¯jdkçå¼æ¾åå§ç çæ¬ï¼ä»¥GPLåè®®çå½¢å¼æ¾åºãå¨JDK7çæ¶åï¼openjdkå·²ç»æ为jdk7ç主干å¼åï¼sunjdk7æ¯å¨openjdk7çåºç¡ä¸åå¸çï¼å ¶å¤§é¨ååå§ç é½ç¸åï¼åªæå°é¨ååå§ç 被æ¿æ¢æã
2ãJDK表示çæ¯Oracleå ¬å¸çéæºç¨åºOpenJDKæ¯Oracleå ¬å¸çå¼æºç¨åºé½æ¯åä¸ä¸ªå ¬å¸ç产åï¼åªæ¯åè ç±ç¤¾åºå¼åè æä¾æ´æ°JDKåç±Oracleå ¬å¸æä¾æ¯æã
3ã许å¯è¯OracleJDKä¾æ®Oracleäºè¿å¶ä»£ç 许å¯å议许å¯è¯ï¼èOpenJDK使ç¨GNUéç¨å ¬å ±è®¸å¯è¯(GNUGPL)第2çï¼ä½æä¸ä¸ªé¾æ¥ä¾å¤ã
4ãgcjæ¯ä¸ä¸ªç¼è¯å¨ï¼ç¨æ¥æjava代ç ç¼è¯æåèç çãgijæ¯ä¸ä¸ªè§£éå¨ï¼ç¨æ¥æåèç 解éææºå¨ç çã
5ãä»åé¢ä»ç»çJavaåå±å²ä¸æ们äºè§£å°OpenJDKæ¯Sunå¨å¹´æ«æJavaå¼æºèå½¢æç项ç®ï¼è¿éçâå¼æºâæ¯é常æä¹ä¸çæºç å¼æ¾å½¢å¼ï¼å³æºç æ¯å¯è¢«å¤ç¨çï¼ä¾å¦IcedTeaãUltraVioleté½æ¯ä»OpenJDKæºç è¡çåºçåè¡çã
使ç¨openjdkéå°çé®é¢1ãTomcatæå¡åºç°ä¸è½æ£å¸¸å¯å¨çé®é¢ï¼åºç¬¬ä¸æ¶é´æ¥çTomcatlogsæ件夹ä¸ï¼å½å¤©ä»¥âcammons-daemonâå¼å¤´çæ¥å¿æ件è¿è¡ææ¥ã
2ãä½ å¥½ï¼è¯¥é®é¢æ åµæ¯Microsoft.NETFrameworkåå§åé误ãMinecraftæ¬èº«ç¨çæ¯JAVAï¼ä½ç½æçå¯å¨å¨è¦ç¨å°.NETã
3ãå¯è½æ¯å ç¨å åãcpuè¿é«ï¼å¯¼è´æ æ³å·¥ä½äºï¼æè æ¯æ¾å¡é©±å¨é®é¢ã解å³åæ³æ¯æ´æ°æ¾å¡é©±å¨ææ¢ä¸ä¸ªæ¾å¡é©±å¨çæ¬ã
openjdkå个åè¡çå¸åºä»½é¢1ãæä½³æ¡é¢åè¡çï¼ElementaryOSElementaryOSLokiä¸ä» é常ç¾è§ï¼ä¸ç¨³å®æ§åºè²å¹¶æä¾æ ä¸ä¼¦æ¯çç¨æ·å好æ§åä¸è´æ§ãè½ç¶å¸¦æé¨å主è§å ç´ ï¼ä½æ认为ElementaryOSLokiå¿ ç¶è½å¤å¨å¹´å å»è´¥LinuxMintæ为æä½³æ¡é¢åè¡çã
2ãå¹´ï¼BobYoungæç«äºACCå ¬å¸ï¼è¿æ¯ä¸å®¶é®è´å ¬å¸ï¼ä¸»è¦ä¸å¡æ¯åºå®LinuxåUnixç软件é件ã
3ãOpenJDKä¸ç代ç åºæ¬ä¸é½æ¥èªäºOracleJDKï¼å±äºOracleJDKçä¸ä¸ªåæ¯ï¼ä½æ¯å ¶ä¸å»é¤äºä¸äºéå¼æºçç»ä»¶å代ç ï¼æ¿æ¢æäºå¼æºçç»ä»¶å代ç ï¼ä¸»è¦æ¯å å¯åå¾å½¢çé¨åãå æ¤ç¨OpenJDK代æ¿OracleJDKå¯è½ä¼æä¸äºçä¸å ¼å®¹ã
4ãèPHPãJavaåä¸åï¼å®ä»¬é½æ¯è·¨å¹³å°å¼æºå è´¹çï¼è½ç¶Javaå¼å§æ¶è´¹äº(ä½è¿æå è´¹çOpenJDK)ï¼æ以PHPãJavaè¿æ¯é¦éãæèªå·±å½åå¦è¿.netï¼javaï¼ç°å¨ç®æ¯ç¥æäºè§£ã
openjdkå cpué«æä¹å¤ç1ãopenjdkplatformbinaryå ç¨CPUè¾é«å¯è½æ¯å ä¸ºä½ ççµèç³»ç»ä¸æå¤ä¸ªJavaç¨åºå¨è¿è¡ï¼æè ä½ ççµèç³»ç»ä¸çJavaç¨åºè¿è¡æ¶é´è¿é¿ï¼å¯ä»¥å°è¯å ³éä¸äºä¸å¿ è¦çJavaç¨åºï¼æè éå¯çµèï¼ä»¥éæ¾CPUèµæºã
2ãå é¤å¤ä½MODï¼å é¤å¤ä½çMODå¯ä»¥éä½å åå ç¨ï¼å¢å 空é²å åã使ç¨ä¼åMODï¼ç¨ä¼åMODï¼æ¥ä¼åå åå ç¨ï¼éä½æ ç¨å åçå ç¨ã
3ãå¯è½æ¯å ç¨å åãcpuè¿é«ï¼å¯¼è´æ æ³å·¥ä½äºï¼æè æ¯æ¾å¡é©±å¨é®é¢ã解å³åæ³æ¯æ´æ°æ¾å¡é©±å¨ææ¢ä¸ä¸ªæ¾å¡é©±å¨çæ¬ã
4ã以ä¸æ¯å¨JDK8ä¸çThreadæºç ä¸å¤æ³¨çã
5ãMicrosoftBuildofOpenJDKæ¯ç±å¾®è½¯å®æ¹åå¸çOpenJDKå®ç°ï¼æä¾ä¸ä¸ªçº¯çº¿ç¨å®å ¨ã解å³äºå®å ¨æ¼æ´åé误çJavaå¼ååè¿è¡ç¯å¢ã
6ãé¦å è¦å æç¡®ä¹é´ï¼ä»¥åOpenJDKOpenJDKOpenJDK7uåOpenJDK8ç项ç®ä¹é´æ¯ä»ä¹å ³ç³»ï¼è¿æå©äºç¡®å®æ¥ä¸æ¥ç¼è¯è¦ä½¿ç¨çJDKçæ¬åæºç åæ¯ã
在谷歌云上高速编译安卓AOSP ROM、驱动、内核并完成刷机
感谢肉丝大佬文章 anquanke.com/post/id/... 乌师傅 谷歌云和驱动的建议 众多翻阅过的博客文章
选择服务器时,可能遇到配额不够的问题。点击申请配额,然后提交申请,等待配置完成。
同步源码时,swipe 源码可以选清华或谷歌源。若操作于谷歌云,则使用谷歌同步源码。指定版本同步时,注意输入y并选择正确的版本。Pixel对应Android 的tag是android-.0.0_r2,build id为QP1A..。确保版本无误,避免后续刷机失败。
htop显示多个cpu运转,cpu使用率为0表示同步完成。
下载驱动,忽略此步骤若无需刷机。Pixel机型对应QP1A..的驱动下载并解压,生成vendor文件夹,内容需复制至AOSP源代码目录。
编译AOSP源码需安装OpenJDK 8,避免使用非SUN JDK1.8导致的编译错误。遇到问题时,执行特定命令初始化编译环境。等待编译,个cpu的谷歌云环境下,编译时间只需几分钟。
编译完成后,系统镜像位于当前目录的out/target/product/sailfish/下。
编译内核,当前版本为3.,分支为gdce。winxpe源码选择内核版本,切到对应分支,开始编译。编译完成后,文件位于指定位置。
刷机编译过程需耐心,重要的是编译速度。谷歌云提供+的cpu,加快编译。源码编译问题多由环境依赖引起,耐心解决。
总结,刷机编译耗时两天,遇到诸多坑点。关键在于编译速度。谷歌云的高cpu配置有助于加速编译过程。环境依赖问题需细心排查,耐心解决。
真·手把手,从头教你编译JDK
本文将手把手教你编译 JDK,让你深入了解这一过程。尽管使用 JAVA 的人对 JDK 都不会陌生,但真正亲自编译它的开发者可能寥寥无几。然而,在遇到难以界定且现象奇特诡异的问题时,自定义 JDK 可能成为解决问题的关键。
首先,确保你的源码 cms环境准备充分。我使用的是 CentOS 7.6 虚拟机,系统干净,没有安装额外软件。编译 JDK 需要特定的环境配置,例如确保 make 版本大于 3.8.1,这在 CentOS 7.6 以上版本中通常满足。此外,需要一个 Bootstrap JDK,版本为 7,避免使用版本为 8 的 JDK。将 Bootstrap JDK 的 bin 目录添加至 PATH,这样可以避免在后续步骤中配置参数。
接下来,按照 openjdk8 的 build 说明进行准备。下载并解压 JDK 7(版本为 jdk-7u-linux-x.tar.gz),并记住 java 的位置(/home/jdk/jdk1.7.0_/bin)。如果环境变量中已包含 JAVA_HOME,需将其删除,以确保编译过程顺利进行。
在准备阶段中,下载 openjdk 源代码时,可能会遇到各种问题。在收到错误提示如 "WARNING: jaxws exited abnormally" 或 "WARNING: jdk exited abnormally" 时,可以尝试重新执行 get_source 命令,该命令会仅下载未成功下载的组件。若长时间没有响应,检查带宽使用情况,必要时使用命令终止 Python 克隆进程,重新执行 get_source。
在下载完成后,执行编译命令:`bash ./configure make all`。确保 Bootstrap JDK 已添加至环境变量中,无需额外配置参数,除非通过 yum 安装依赖和调整 PATH。配置完成后,执行 `make` 命令,等待编译过程结束。
编译完成之后,可以使用自己编译的 JDK 来进行测试。通过 `images` 目录中的 j2sdk-image 和 j2re-image 来验证 JDK 的正确性。使用 `cp` 命令将 JDK 目录复制至其他位置,并检查版本信息。最后,编写脚本测试 JDK 的实际应用,例如使用 metabase 等复杂应用验证 JDK 的兼容性和稳定性。
通过本文的指导,你不仅能够成功编译 JDK,还能进一步理解 JDK 的内部结构和工作流程。实际操作中,可能会遇到一些挑战,但只要坚持下去,最终能够达到预期目标。
学妹问我:OpenJDK是什么?作为师哥,必须万字详解屁颠屁颠奉上
作为一名资深的编程导师,我很荣幸地为初入编程界的学妹详细解析OpenJDK的奥秘。OpenJDK,这个名字背后,蕴含着Java世界的开源精神和技术创新。它不仅是Java SE的基石,更是推动Java技术发展的重要力量。
OpenJDK诞生于年,由Java的创建者Sun Microsystems发起,以GNU GPL许可协议开放源代码,其核心组件包括高效的HotSpot虚拟机、丰富的Java库和强大的javac编译器。从Java SE 7开始,OpenJDK的地位举足轻重,成为了官方的参考实现,包括Oracle JDK在内的后续版本都是基于它的基础构建的。
这个社区项目由OpenJDK Community和Oracle等多家公司及开发者共同构建,严格遵循JCP(Java Community Process)制定的Java规范。OpenJDK提供源代码,而编译后的二进制文件则由Oracle或其他第三方供应商提供。它的发展历程见证了Java的演进,从年的初露锋芒,到年的开源大潮,再到现在的广泛接纳和持续创新。
OpenJDK的开源代码托管在GitHub上,代码更新频繁,每个版本的发布都伴随着技术的革新。从OpenJDK 6到,每一个版本都代表了Java技术的迭代和优化,比如OpenJDK 8的发布,标志着Java进入了新的时代。社区成员通过严格的提名和管理机制,共同维护着Java SE平台的开源实现。
对于初学者来说,OpenJDK的6到版本中,比如OpenJDK 8 GA的发布,标志着Java 8的正式到来,之后的Update Releases则提供了持续的性能提升和功能完善。社区的开放源代码环境鼓励了开发者积极参与,无论是作为参与者、贡献者还是OpenJDK成员,都能在其中找到自己的位置。
理解OpenJDK与JDK的关系非常重要,虽然OpenJDK本身不提供二进制文件,但自Java SE 7以来,所有JDK都基于其构建,保证了代码的兼容性和稳定性。Oracle JDK是这些官方发行版的代表,而OpenJDK则是整个Java生态系统的核心驱动。
在OpenJDK的发展过程中,Java Community Process扮演着关键角色,它负责技术规格的制定和维护,确保所有开发的Java产品都符合Java规范。这包括严格的JSR(Java Platform Standardization Requests)流程,从提案、评审到最终批准,每一步都旨在保证Java技术的统一和进步。
最后,尽管OpenJDK的构建和Oracle JDK的选择可能需要更多的探讨,但请记住,学习OpenJDK不仅是掌握Java技术的基础,更是参与开源社区、提升编程技能的重要途径。在学习的道路上,我期待你的每一个进步,加油,学妹!
Hotspot调试环境搭建-基于Ubuntu..7-OpenJDK8u-Clion
搭建基于Ubuntu ..7与OpenJDK 8u的Hotspot调试环境,涉及以下步骤:
首先,安装版本管理工具Mercurial,其功能类似Git,用于管理OpenJDK版本。使用命令进行安装,遇到问题时尝试重启系统解决问题。
其次,设置代理以加速下载国外仓库,如hg.openjdk.java.net。在用户家目录下创建.hgrc文件,配置代理信息。如果没有代理,可考虑从其他GitHub源下载代码,但同样会面临速度问题。
接着,下载代码。下载地址提供的是一个壳工程,包含get_source.sh脚本。执行该脚本下载完整代码。
下载时需注意,get_source.sh脚本仅适用于带有版本信息的仓库,使用其他方式下载的源码文件不能执行。确保下载完整。
预装依赖,安装GCC及编译所需依赖包。
安装BOOT JDK,可通过华为JDK官网镜像下载,使用绿色解压方式。
编译配置完成后,进行编译。使用bear命令行工具,生成compile_commands.json文件,此文件可用于导入Clion进行调试,无需生成CMakeList.txt文件。至此,环境搭建完成。
搭建Hotspot调试环境,遵循上述步骤,确保所有操作正确无误,即可成功搭建基于Ubuntu ..7与OpenJDK 8u的调试环境。