OpenJDK

如何在 Ubuntu Linux 上安装 Oracle Java 14 | Linux 中国

混江龙づ霸主 提交于 2020-04-06 12:44:58
最近,Oracle 宣布 Java 14(或 Oracle JDK 14)公开可用。如果你想进行最新的实验或者开发的话,那么你可以试试在 Linux 系统上安装 Java 14。 -- Ankush Das(作者) 最近,Oracle 宣布 Java 14(或 Oracle JDK 14)公开可用。如果你想进行最新的实验或者开发的话,那么你可以试试在 Linux 系统上安装 Java 14。 Oracle JDK 14(或简称 Java 14) 发布版 包含几个新功能,如果你想预览它们的话。我已添加了链接: instanceof 的模式匹配 Records Text Blocks 除预览功能外,它还包含一些改进和补充。在新闻中,他们还提到了其他改进: 此外,最新的 Java 版本增加了 Java 语言对 switch 表达式的支持,新增了用于持续监控 JDK Flight Recorder 数据的新 API,将低延迟 zgc 扩展到了 macOS 和 Windows,并添加在 incubator 模块中,独立的 Java 应用打包,以及为了安全、有效地访问 Java 堆外部内存的新的外部内存访问 API。 当然,如果你想深入了解细节,那么你应查看 官方公告 。 在本教程中,我将向你展示在 Ubuntu 系统上安装 Java 14 的简便方法。请继续阅读。 注意: 如果你选择使用

开发安全Java应用程序的13条规则

Deadly 提交于 2020-04-06 10:36:19
安全性是软件开发中最复杂,最广泛和最重要的方面之一。在开发周期结束时,软件安全性也经常被忽视,或者被简化为仅需进行少量调整。我们可以在年度主要数据安全漏洞清单中看到结果,该 清单在2019年总计超过30亿条暴露记录。如果Capital One可能发生这种情况,那么您也可能发生这种情况。 好消息是Java是具有许多内置安全性功能的长期开发平台。该Java安全包已经发生了强烈的战斗测试,并经常更新为新的安全漏洞。2017年9月发布的更新的Java EE安全API解决了云和微服务架构中的漏洞。Java生态系统还包括用于分析和报告安全性问题的各种工具。 但是,即使有了一个可靠的开发平台,也要保持警惕。应用程序开发是一项复杂的工作,漏洞可能隐藏在背景噪声中。您应该在应用程序开发的每个阶段都考虑安全性,从类级别的语言功能到API端点授权。 以下基本规则为构建更安全的Java应用程序奠定了良好的基础。 1:编写干净而强大的Java代码 漏洞喜欢隐藏在复杂性中,因此在不牺牲功能的情况下使代码尽可能简单。使用成熟的设计原则(例如 DRY)(不要重复),将帮助您编写更易于查看问题的代码。 始终在代码中公开尽可能少的信息。隐藏实施细节支持可维护和安全的代码。这三个技巧将大大有助于编写安全的Java代码: 充分利用 Java的访问修饰符。知道如何为类,方法及其属性声明不同的访问级别将大大保护代码

从Java对象布局markword看syncronized的本质

自作多情 提交于 2020-04-05 15:55:15
可以通过以下工具来查看Java对象的布局:JOL=Java Object Layout。 <!-- https://mvnrepository.com/artifact/org.openjdk.jol/jol-core --> <dependency> <groupId>org.openjdk.jol</groupId> <artifactId>jol-core</artifactId> <version>0.10</version> </dependency> 先看下在JVM中,一个引用的长度占用多少字节: import org.openjdk.jol.vm.VM; public class JavaObjectLayout { public static void main(String[] args) { System.out.println("------------VM details---------------"); System.out.println(VM.current().details()); } } 这个details()方法由JOL类库中的HotspotUnsafe类实现: 运行结果: 运行结果中可以看到: 1.JVM是64位的HotSpot 2.默认开启oop(Ordinary Object Pointer,普通对象指针)压缩,可设置JVM参数-XX:

Java新特性快速笔记

被刻印的时光 ゝ 提交于 2020-04-05 15:42:10
Java 9 是 Java 新的版本发布周期公布之前的最后一个新版本,并且因此,他这个版本特性极多,有着81个 JEP。 发布日期: 2017-9-21 所有的 JEP 链接地址: https://openjdk.java.net/projects/jdk9/ 在这个版本中,最重要的特性就是 Java 模块化 JPMS,也就是 Project Jigsaw ( https://openjdk.java.net/jeps/261) 另外一些值得关注并且实际使用的新特性: VarHandles ( https://openjdk.java.net/jeps/193): 用于替换 sun.misc.Unsafe 类中对于内存的操作 Jshell( https://openjdk.java.net/jeps/222): 类似于 python 脚本语言的 REPL(Read-Eval-Print-Loop) 工具 G1 垃圾收集器从这个版本开始成为默认的垃圾收集器( https://openjdk.java.net/jeps/248) Stack-Walking API ( https://openjdk.java.net/jeps/259):在之前版本中,想获取调用堆栈,一般通过抛出异常来读取异常堆栈从而获取调用堆栈, 或者通过 SecurityManager 来获取。从这个版本开始

[hyper-V] centos 7 安装 java

别来无恙 提交于 2020-04-01 06:09:54
# centos安装 java [root@bogon ~]# java -version openjdk version "1.8.0_102" OpenJDK Runtime Environment (build 1.8.0_102-b14) OpenJDK 64-Bit Server VM (build 25.102-b14, mixed mode) 进一步查看JDK信息: [root@bogon ~]# rpm -qa|grep java java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64 tzdata-java-2016g-2.el7.noarch javapackages-tools-3.4.1-11.el7.noarch java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64 java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64 java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64 python-javapackages-3.4.1-11.el7.noarch [root@bogon ~]# 卸载OpenJDK,执行以下操作: rpm -e --nodeps java-1.8

年末展望:Oracle 对 JDK收费和.NET Core 给我们的机遇

≯℡__Kan透↙ 提交于 2020-03-30 02:37:12
2018年就结束了,马上就要迎来2019年,这一年很不平凡,中美贸易战还在继续,IT互联网发生急剧变化,大量互联网公司开始裁员,微软的市值在不断上升 ,在互联网公司的市值下跌过程中爬到了第一的位置,我们展望2019年,相信前方的坑很多,这里想聊下一个和我们的工作生活息息相关的问题,那就是Oracle 对 JDK收费和.NET Core 给我们的机遇。 Oracle 宣布,"2019年1月之后",如果没有商业许可,Java SE 8公开更新将无法用于"商业,商业或生产用途"。组织现在需要对运行Java SE 8的所有软件进行评估,并开始计算明年他们正在寻找的潜在账单。 图片 截自 : https://www.oracle.com/assets/java-se-subscription-pricelist-5028356.pdf 国内又有那些互联网公司是使用Java作为核心技术的公司呢?这些公司是否给 Oracle 付费了,是否所有服务器都付费了呢?中国的政府机构又有多少需要给 Oracle 付费购买授权?中美贸易战的90天限期谈判在继续, 打击侵犯知识产权,中国已经在行动。新加坡亚洲新闻台报道说,中国38个部门12月4日发布联合政策,以应对一系列侵犯知识产权的行为。中国拟在这一领域建立一个“社会信用体系”,公布全国范围内严重侵犯知识产权者的名单。12月5日耿爽表示

CentOS7安装Java8

大城市里の小女人 提交于 2020-03-27 13:24:25
1.卸载系统自带的OpenJDK以及相关的java文件 键入命令 java -version 键入命令 rpm -qa | grep java 把带openjdk的都删除 验证是否删干净 2.解压java8到相应目录 配置JDK环境变量 键入命令 vim /etc/profile 修改配置文件,记得要在root权限下修改 JAVA_HOME=存放Java8的路径 键入命令source /etc/profile 使配置文件生效 来源: https://www.cnblogs.com/lvym/p/12580631.html

你写的Java对象究竟占多少内存?

跟風遠走 提交于 2020-03-26 11:36:53
3 月,跳不动了?>>> Java 作为一个面向对象语言,给我们带来了多态,继承,封装等特性,使得我们可以利用这些特性很轻松的就能构建出易于扩展,易于维护的代码。 作为一个Javaer,天天搞“对象”,那你写的对象究竟占用了多少内存呢? 我们来看看你的“对象”是如何“败家”的。 本文环境:jdk1.8_64 Java 对象头内存模型 我们先来看看,一个Java 对象的内存模型是怎么样的? 由于我们的虚拟机是分为32位和64位,那肯定它们的模型也是有区别的,下面我列出列32位虚拟机和64位虚拟机下的Java对象头内存模型。 因为笔者的本地环境是jdk1.8,64位虚拟机,这里我以64位虚拟机(开启指针压缩)来分析,因为默认情况下,jdk1.8 在64位虚拟机默认开启指针压缩。 Java 对象头主要包括两部分,第一部分就是 Mark Word,这也是 Java 锁实现原理中重要的一环,另外一部分是 Klass Word。 Klass Word 这里其实是虚拟机设计的一个oop-klass model模型,这里的OOP是指Ordinary Object Pointer(普通对象指针),看起来像个指针实际上是藏在指针里的对象。而 klass 则包含 元数据和方法信息,用来描述 Java 类。它在64位虚拟机开启压缩指针的环境下占用 32bits 空间。 Mark Word 是我们分析的重点

ubuntu下删除openjdk,改用sun jdk

拜拜、爱过 提交于 2020-03-23 12:15:19
一,卸载以前的JDK 在新立得中标记全部含有openjdk的选项,彻底删除。 或者执行 sudo apt-get autoremove openjdk-6-jre 二,下载JDK软件 安装 sun jdk步骤 如下: 从http://www.oracle.com/technetwork/java/javase/downloads/中下载jdk,我的版本是jdk1.6.0_30,下载Linux64的bin文件,将其放在/usr/local/ 或者添加仓库下周: sudo add-apt-repository ppa:ferramroberto/java sudo apt-get update sudo apt-get install sun-java6-jdk sun-java6-plugin 然后,执行解压安装 bin etc games include jdk1.6.0_31 jdk-6u31-linux-x64.bin lib man sbin share src icetea@ubuntu:/usr/local$ ./jdk-6u31-linux-x64.bin 将会出现字幕,持续按回车键,直至屏幕显示要求输入yes/no,此时输入y回车,将会把jdk解压到文件夹,得到 jdk1.6.0_31 目录。 此时,jdk已安装完毕,下面进行配置 执行 代码: sudo vim

真·手把手,从头教你编译JDK

佐手、 提交于 2020-03-22 16:47:44
3 月,跳不动了?>>> 用JAVA作为开发工具的人都不会对JDK陌生,几乎天天都在用 其中有多少人真正编译过JDK呢? 估计是少之又少了 但是我们可能经常会遇到一些问题,现象奇特诡异,难以界定,但是如果能在JDK中做点儿手脚,也许就会让问题找到解决的方向 这篇文章,就是手把手教你怎么编译一个JDK 别光看,凡是都要自己动手做一遍 环境准备 我使用的环境是在虚拟机上安装的Centos7.6,纯净系统,其他啥都没装 查看说明 这是openjdk8的build说明,后面我会把里面重要的部分截图拿出来并简单说明 http://hg.openjdk.java.net/jdk8u/jdk8u/raw-file/tip/README-builds.html 根据说明 命令就两步 bash ./configure make all 但是需要一些环境准备 make版本有要求,要大于3.8.1,自己检查一下,centos7.6以上的肯定满足 需要有一个Bootstrap JDK,需要7的,不能用8的,需要把bin加到path里面,这样就不用配置参数了 下载jdk7,tar形式的 jdk-7u80-linux-x64.tar.gz 解压 tar zxvf jdk-7u80-linux-x64.tar.gz 记下java的位置 /home/jdk/jdk1.7.0_80/bin 不着急加path