一个常见的误区 java软件开发技巧集锦
本文最后更新时间2022-09-18 15:21,已超过831天没有更新,若内容或图片失效,请留言反馈。
深易凡软件库9月18日消息,目的Java虚拟机是Java开发者最常用的平台。理解它的运转原理,可以协助我们成为更好的开发者,更快的处理成绩。关于很多虚拟机知识点,普通人都是经过看书或许文章来理解的。这样做的缺陷是,一个知识经过了两次信息了解和传递,例如会招致信息不精确,那么为什么不本身去探究虚拟机的完成原理呢?理解你常常运用的工具的原理,更容易更好地运用它们,就像赛车手更理解轮胎可以更好地驾驶汽车,厨师更理解锅和菜刀可以练习更好的烹饪技巧。而理解虚拟机最间接的办法就是搭建,调试,开发!
下载代码openjdk的代码在mercurial中,下载比拟慢。我们可以在github上运用mirror。这里选择一个绝对较新的jdk14分支,代码较多,下载工夫稍长。
git克隆https://github.com/openjdk/jdk14u 为了构建虚拟机并实行调试,需求编译代码。
编译依赖于Xcode。可以经过AppStore搜索、下载、装置。jdk的编译需求较低版本的jdk作为boot jdk。关于jdk14,首先从jdk官网下载并装置jdk13。
然后装置一些编译需求的依赖包。
brew装置autoconf freetype ccache 开端编译# First cd到代码目录。 cd jdk14u #配置 bash configure-with-debug-level = slow debug-enable-dtrace-with-JVM-variants = server-with-target-bits = 64-enable-ccache-with-num-cores = 8-with-memory-size = 8000-disable-warnings-as-errors # make,这个进程需求的工夫长一点。 全部制造 获得成功
下验证热jdk构建。
。/build/ma cosx-x86 _ 64-server-slow debug/JDK/bin/Java-version
导入IDE openjdk的代码包括Java(JDK的各种jar包)和C++(热点虚拟机局部)。本文次要关注热点局部。古代IDE是阅读、开发和调试代码的好工具。这里引荐Jetbrains公司(也开发了IntelliJ Idea)提供的CLion。
翻开CLion后选择文件->文件。从源代码新建CMake项目..选择jdk14u下的src/hotspot目录,然后单击确定。CLion会协助我们配置cmake项目运用的CMakelists.txt,树立代码索引,符号表等。,并等候加载完成。点击Clion右上角的hotspot|Debug,添加新的配置。
单击配置自定义构建目的,然后单击添加目的。
设置称号构建openjdk,点击Build右侧的…创立内部工具,点击左下角的加号创立工具、称号、程序、任务目录填写下载的openjdk代码的目录的途径地位,点击确定保管。
然后,在运转/调试配置页面中,Target选择刚刚创立的目的。可执行文件选择jdk built的java文件,即下面两个目录中的JDK 14 u/build/ma cosx-x86 _ 64-server-slow debug/JDK/bin/Java。程序参数暂时填充a版本。最初,单击使用确定保管。
然后单击调试。
在几个断点之后,您可以看到熟习的java版本的后果。
处理IDE代码中少量的白色提示我们随意翻开了几个cpp文件,发现外面有少量的白色提示,让我这种没有强迫症的人感到很不舒适,更大的成绩是不能跳转,给代码阅读带来了很大的困难。我们依然需求处理它。这里的次要缘由是一些代码途径成绩。让我们修正CMakeLists.txt,首先添加这几行,然后单击Reload changes。大局部代码是正常的。假如遇到他人,也可以用相似的方式处理。即便有白色提示,大局部代码也是可跳转的。
包括目录(共享) 包括目录(../java.base/unix/native/include) 包括目录(../Java . base/share/native/include) 包括目录(../../build/ma cosx-x86 _ 64-server-slow debug/JDK/include) 包括目录(../../build/ma cosx-x86 _ 64-server-slow debug/hotspot/variant-server/gensrc) 包括目录(../../build/ma cosx-x86 _ 64-server-slow debug/hotspot/variant-server/gensrc/jvmtifiles)
修正热点代码。这里我们对代码做一些复杂的修正来验证修正进程。找到相关代码执行java -version,abstract_vm_version.cpp,用目前不熟习的C++言语打印出一个Hello World。然后再次单击调试按钮。
其他成绩依据不同的jdk版本和不同的编译宿主环境,上述步骤例如会遇到一些其他成绩,但定位和处理成绩的办法是相反的。
总结以上局部就是一个编译、调试、开发openjdk的复杂进程。授人以鱼不如授人以渔。运用这些办法,更容易反省完成和处理成绩。但最初也要提示大家坚持初心,不要过火沉浸底层完成,不要自觉崇敬开发虚拟机这种一目了然的任务。这是王银的一句话。
每当有人跟我说编译器一目了然却高不可攀的时分,我都会给他打个比如:做编译器就像做菜刀。你可以做一把十分好的菜刀,但你毕竟只是个铁匠。铁匠不晓得怎样用这把菜刀做出各种各样、让人耳目一新的米其林级菜肴,由于那是厨师的任务。是要做饭还是趁热打铁,这是你的选择。没有上下贵贱之分。
更多关于软件资讯请上-德斯软件资讯
本文章的二维码
用手机扫码打开本页
发表评论