使用proguard混淆java9代码

2018-03-15
阅读 5 分钟
9.3k
序 本文主要研究一下如何使用proguard混淆java9代码 maven {代码...} 这里使用6.0.1版本的proguard-base proguard.cfg {代码...} 这里target要指定为9版本 问题 duplicate class definitions {代码...} 如果没有使用到log4j的话,可以在progurard.cfg文件中配置dontwarn忽略 can't find referenced class {代码...} 这种...

java9系列(九)Make G1 the Default Garbage Collector

2018-03-08
阅读 8 分钟
6k
可以用-XX:G1HeapRegionSize=16m来指定Region Size,注意它必须是2的乘方,范围在1MB到32MB之间。目标是根据最小的Java堆大小划分出约2048 个区域.

java9系列(八)Multi-Release JAR Files

2018-03-07
阅读 9 分钟
6k
java9新支持了multi-release jar的功能,包括jar、javac、javap、jdeps等命令都能支持这个特性。所谓multi-release jar可以包含多个jdk版本的实现,在运行时JVM根据当前环境加载符合版本的class,这样可以使得jar包在兼容旧版本的同时尽可能早地尝试新版JDK的特性。

java9系列(七)Variable Handles

2018-03-06
阅读 4 分钟
5.1k
Variable Handles的API主要是用来取代java.util.concurrent.atomic包以及sun.misc.Unsafe类的功能。一个variable handle是一个variable的类型引用,用来在一系列访问模式下来读写variable。支持的variable包括实例变量,静态成员,数据元素等。Variable Handles需要依赖jvm的增强及编译器的协助,即需要依赖java语言规范...

java9系列(五)Stack-Walking API

2018-03-03
阅读 10 分钟
3.6k
java9新增这个类的目的是提供一个标准API用于访问当前线程栈,之前只有Throwable::getStackTrace、Thread::getStackTrace以及SecurityManager::getClassContext提供了方法可以获取线程栈。

java9系列(四)Process API更新

2018-03-02
阅读 5 分钟
3.4k
/Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home/lib/src.zip!/java.base/java/lang/ProcessHandle.java

java9 module相关选项解析

2018-02-28
阅读 7 分钟
7k
在classpath的所有jar(不管是否模块化)共同组成一个unnamed moduleunnamed modules会声明依赖所有的named module,且exports自己的所有包,但是一个named module不能声明依赖unnamed module。如果一个package在named和unnamed模块中都有定义,则使用named中的package。 默认--illegal-access=permit,即允许unnamed modu...

java9 opens与exports的区别

2018-02-27
阅读 5 分钟
4.5k
主要用于解决deep reflection问题,open的作用是表示该模块下的所有的包在runtime都允许deep reflection(包括public及private类型)但是编译时期,仅仅允许该module中声明过exports的包可以访问,如果没有exports则该包的类在编译时期不可读

java9迁移注意事项

2018-02-26
阅读 3 分钟
5k
比如sun.security.x509,在java9中归到java.base模块中,但是该模块没有export该package可以通过运行的时候添加--add-exports java.base/sun.security.x509=ALL-UNNAMED来修改exports设定

[case8]使用maven构建java9 service实例

2018-02-25
阅读 8 分钟
3.1k
整个工程跟传统maven多module的工程结构一样,java9的一个module对应maven project的一个module。下面是根目录下的pom文件:

java9系列(三)模块系统精要

2018-02-24
阅读 3 分钟
3.9k
序 本文主要讲述下java9的模块系统的必知必会的知识点。 1.module及modules module module主要分如下两种: main module 包含main方法的module,通过--module或者-m指定 root module 指定模块系统解析的根模块,从根模块解析模块依赖,可以通过--add-modules mod1,mod2来指定 modules unnamed modules java9通过unnamed ...

使用openjdk9-alpine运行springboot2

2018-02-23
阅读 24 分钟
5.1k
这里使用的是alpine镜像,应为它比较小,基础镜像就几M,相比ubuntu等要小很多。由于Alpine Linux使用MUSL作为标准C库,而openjdk依赖于GNU标准C库(gclib),因此需要alpine版的jdk9才可以在alpine上运行,但是目前jdk 9还没有正式的alpine镜像,只有有一个early access的版Announcing: Early-Access builds of JDK 9 for Alpine...