赞
踩
Java17 官方 API 文档:https://docs.oracle.com/en/java/javase/17/docs/api/index.html
图来源:https://docs.oracle.com/javase/7/docs/
在大多数 Linux 发行版本里,内置或者通过软件源安装 JDK 的话,都是安装的 OpenJDK。
那么什么是 OpenJDK ?OpenJDK 和 OracleJDK 有啥区别 ?
OracleJDK 和 OpenJDK 的区别
Oracle JDK 与 Open JDK 目录结构比较
不同的命令行操作
大白话带你认识 JVM:https://javaguide.cn/java/jvm/jvm-intro.html
JVM 是 Java Virtual Machine 的缩写,它是一个虚构出来的计算机,一种规范。Java 程序再通过这个虚拟的计算机和真实的物理机交互,间接调用真实系统从而实现各种功能。
写一个简单的 HelloWorld.java ,这个 HelloWorld.java 抛开所有东西不谈,其实就是后缀名以java结尾的文本文件,JVM 是不认识文本文件的,所以它需要 编译 成一个二进制文件 HelloWorld.class,Java 文件经过编译后变成 .class 字节码文件,这样 JVM 才能认识。
但是 JVM 想要执行这个 .class 文件,我们需要将其装进一个 类加载器 中,它就像一个搬运工一样,会把所有的 .class 文件全部搬进 JVM 里面来。
字节码文件通过类加载器被搬运到 JVM 虚拟机中。虚拟机主要的 5 大块:方法区,堆都为线程共享区域,有线程安全问题,栈和本地方法栈和计数器都是独享区域,不存在线程安全问题,而 JVM 的调优主要就是围绕堆,栈两大块进行
什么是 Oracle GraalVM:https://www.oracle.com/cn/java/graalvm/what-is-graalvm/
在讲GraalVM前,先回看下Java当前遇到的问题,概括而言如下:
怎么办?要兼容稳定,那么别打语法、API、字节码创新的心思,Java本身就那样了,但它背后的JVM 却有更多的选择。Java 的问题可以让 JVM 来补救,说资源占用高那先来个 JPMS 模块化(但目前看貌似并不成功),说启动延迟大那咱支持AoT搞Native吧,说对系统级应用、移动应用、敏捷应用支持不好那你行你上,我把你们都包进来纳入到我JVM大生态中,这就是GraalVM正在做的。所以 GraalVM 是一个新的 JVM。
官方定义 GraalVM 的定义
Oracle GraalVM 是一个使用即时 (JIT) 编译器加速 Java 和 JVM 应用性能的高性能 JDK。它由 Oracle 提供 24/7 支持,能够降低应用延迟,通过缩短垃圾回收时间提高峰值吞吐量。
此外,GraalVM 本地镜像实用程序可提前 (AOT) 编译 Java 字节码,生成可近乎瞬时启动且仅占用极少内存资源的本机可执行文件。
官网下载地址:https://www.oracle.com/java/technologies/downloads/
Java8下载:https://www.java.com/en/download/
JDK 镜像站点:https://www.injdk.cn/
Oracle 官网有好几个 java 版本,但是最重要的主要有三个:Java SE、Java EE、Java ME
三者的区别,简而言之,主要是面向的应用领域不一样
配置Java环境变量:https://www.runoob.com/w3cnote/windows10-java-setup.html
( java1.5 版本之后可不需要设置 classpath )
windows 设置步骤:此电脑 ---> 属性 ---> 高级系统设置 ---> 环境变量 ---> 系统环境变量
JAVA_HOME D:\java\jdk1.8.0_171
CLASSPATH .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
Path 添加 %JAVA_HOME%\bin 和 %CLASSPATH%
解压:tar -zxvf 文件名
临时设置:export PATH=/usr/local/share/java17/bin:$PATH
当前用户设置,打开~/.bashrc,添加行:export PATH=/usr/local/share/java17/bin:$PATH
所有用户设置(vim /etc/profile):export export PATH=/usr/local/share/java17/bin:$PATH
对于对vi不熟悉的可以使用 gedit 命令启动文本编辑器比起vi命令更方便:sudo gedit /etc/profile
export JAVA_HOME=/opt/java/jdk-10.0.1
export JRE_HOME=/opt/java/jre-10.0.1
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${PATH}:${JAVA_HOME}/bin:${JRE_HOME}/bin
设置生效:source profile
验证是否成功。执行命令:java --version 或者 javac --version
如果安装正确,jdk 和 jre 则都是我们自己安装的版本
由于 Ubuntu 中可能会有默认的 jdk,如 openjdk。如果有 openjdk时。可以设置默认使用的jdk。
sudo update-alternatives --install /usr/bin/java java /opt/java/jdk-10.0.1/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /opt/java/jdk-10.0.1/bin/javac 300sudo update-alternatives --install /usr/bin/java java /opt/java/jdk-10.0.1/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /opt/java/jdk-10.0.1/bin/javac 300
sudo update-alternatives --install /usr/bin/jar jar /opt/java/jdk-10.0.1/bin/jar 300
sudo update-alternatives --install /usr/bin/javah javah /opt/java/jdk-10.0.1/bin/javah 300
sudo update-alternatives --install /usr/bin/javap javap /opt/java/jdk-10.0.1/bin/javap 300
通过上面步骤将我们安装的 jdk 加入 java 选择单。
然后执行代码:
sudo update-alternatives --config java
sudo update-alternatives --config javac
通过这一步选择系统默认的jdk
ubuntu 切换java环境,配置单独的用户环境
执行命令:sudo update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 auto mode
1 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1071 manual mode
2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode选择 1
然后服务器的全局变量java就是变成
java -version
java version "1.7.0_121"
OpenJDK Runtime Environment (IcedTea 2.6.8) (7u121-2.6.8-1ubuntu0.14.04.3)
OpenJDK 64-Bit Server VM (build 24.121-b00, mixed mode)
Linux 使用 update-alternatives 命令进行版本的切换:https://blog.csdn.net/JasonDing1354/article/details/50470109
ubuntu 利用 update-alternatives 配置 java:https://blog.csdn.net/yinlijun2004/article/details/53008035
执行命令:sudo apt-get remove openjdk*
关于壳的资料
Dex文件结构:https://blog.csdn.net/androidsecurity/article/details/8664778
APK加壳原理简述:https://blog.csdn.net/amurocrash/article/details/79103189
Android APK加壳技术方案【1】:https://blog.csdn.net/androidsecurity/article/details/8678399
Android APK加壳技术方案【2】:https://blog.csdn.net/androidsecurity/article/details/8809542
Android4.0内存Dex数据动态加载技术https://blog.csdn.net/androidsecurity/article/details/9674251
Windows 版下载地址:https://www.jb51.net/softs/603472.html
Java 版下载地址:https://pan.baidu.com/s/1rDfsEvqQwhUmep1UBLUwSQ 密码: wefd
Windows 解压后双击即可打开,选择apk路径或直接拖放至exe中
Java 版的需要用到Java环境,然后执行:java -jar .\ApkScan-PKID.jar
.jar 文件的类型为 Executable Jar File (.jar),可以直接双击执行,但是运行.jar需要安装相应的java环境。其实.jar文件可以直接解压缩,里面都是.class文件,但是.class文件不能直接运行。首先弄清楚要运行的 .jar 文件需要哪个版本的JDK,,再去官网下载。JDK包含JRE,JRE又包含JVM
示例:java -jar .\ApkScan-PKID.jar
在运行中输入regedit
,打开注册表编辑器,菜单栏---> 编辑 ---> 查找 javaw.exe
。
找到以下目录 javaw.exe->shell->open->command,找到后按箭头指示双击修改数据
修改数据为 "C:\Program Files\Java\jdk-15.0.2\bin\javaw.exe" -jar "%1" 然后单击确定,现在就可以双击运行 jar 文件。
修改注册表可能过于麻烦,还不如直接命令行启动jar文件例如:java -jar jar文件路径
但是每次都用命令行和复制文件路径又过于繁琐而且还要考虑绝对路径和相对路径的问题,所以不如直接写一个bat命令程序,在每次双击运行jar文件时用该程序打开,间接的调用命令行,但是节省了敲命令的时间以及避免了路径的错误,一劳永逸。程序代码如下。
javaw -jar %1
再把jar文件的默认打开方式指定为jar.bat就好了。以后jar文件就都可以双击直接运行了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。