java8中方法区的内存大小如何设置_从Java8升级到Java11

奇技 · 指南

为什么选择Java11?

容器环境支持,GC等领域的增强,仅通过切换到 Java 11 就有 16% 的改进。

进行了瘦身,更轻量级,安装包体积小。

JDK11 是一个长期支持版。

1

Java11相对于Java8的一些新特性

1.变量类型推断

Var关键字:新版Java引入全新的类型关键字var,用var来定义的变量像python一样不用写具体类型,编译器能根据实际赋值来自动推断变量的类型

2.普通局部变量

c72690f52b146905e6669024a716c7af.png

3.For循环中使用

87b0c79ad46021a6f2ebeb5e73a7b7e3.png

4.Var结合泛型

dbdcdf333adef1c2a616380357706e78.png

注意:var不能在类成员变量类型和方法返回值类型使用

5.增强api

6.String 增强

新版本增加了一些更方便的字符串处理的API2675d1cb3347640f1e02fc091a024d58.png

7.集合增强

增加了一些更加方便的创建和复制集合类型的API

● of() @since 9

● copyOf() @since 10

0e9625f99d335c12c38b785e627dce1f.png

8.Stream增强

Java 8 中的流已经很强大了,而且只要涉及到 IO,只要涉及到对一系列数据进行操作,都会用到流。

当然了,Java 9对其操作继续增强,这次的改进主要是如何设置停止流的条件上。为此在流的实例上提供了四个方法 takeWhile(Predicate Interface) 、iterate 、ofNullable 和 dropWhile(Predicate Interface)

2

HTTP Client API

新版jdk官方自带httpClient,支持发送同步、异步的http请求

0b52b63b14a71152433662ed64e86f3c.png

  • 完全支持Linux容器(包括docker)

许多运行在Java虚拟机中的应用程序(包括Apache Spark和Kafka等数据服务以及传统的企业应用程序)都可以在Docker容器中运行。但是在Docker容器中运行Java应用程序一直存在一个问题,那就是在容器中运行JVM程序在设置内存大小和CPU使用率后,会导致应用程序的性能下降。这是因为Java应用程序没有意识到它正在容器中运行。随着Java 10的发布,这个问题总算得以解决,JVM现在可以识别由容器控制组(cgroups)设置的约束。可以在容器中使用内存和CPU约束来直接管理Java应用程序,其中包括:

● 遵守容器中设置的内存限制

● 在容器中设置可用的CPU

● 在容器中设置CPU约束

3

升级过程中遇到的一些问题

1. javax.xml.bind 不存在

Java11 删除了 Java EE modules,其中就包括 java.xml.bind (JAXB)。

启动时警告:

32be51b6aa8bc6f8ccf53d0dc2807b69.png

解决方案:手动添加相关依赖

<dependency><groupId>javax.xml.bindgroupId><artifactId>jaxb-apiartifactId><version>2.3.0version>dependency><dependency><groupId>com.sun.xml.bindgroupId><artifactId>jaxb-coreartifactId><version>2.3.0version>dependency><dependency><groupId>com.sun.xml.bindgroupId><artifactId>jaxb-implartifactId><version>2.3.0version>dependency>
2. 编译报错

由于JDK11中删除了sum.misc包,编译时会报错:sun.misc.BASE64Encoder、sun.misc.BASE64Decoder找不到类

解决方式:
使用java.util.Base64.Encoderjava.util.Base64.Decoder替换

3.服务启动报错

① JDK11下使用最新的Greenwich版本的eureka默认情况下必定无法启动,日志提示内嵌的Tomcat没法启动

e8e2b9ddd89ae05d2679a6e5dbad608a.png

解决方式:加入JAXB依赖

<dependency><groupId>org.glassfish.jaxbgroupId><artifactId>jaxb-runtimeartifactId><version>2.3.2version>dependency>
② JDK9以后的版本,模块化的概念去除了JAXB(默认没有加载),需做接入声明

c5aa0d026be33c91dc68dc90c5f3d016.png

解决方式:加入JAXB依赖

<dependency>
   <groupId>javax.xml.bindgroupId>
        <artifactId>jaxb-apiartifactId>
dependency>
 <dependency>
         <groupId>com.sun.xml.bindgroupId>
         <artifactId>jaxb-implartifactId>
         <version>2.3.0version>
 dependency>
 <dependency>
        <groupId>org.glassfish.jaxbgroupId>
        <artifactId>jaxb-runtimeartifactId>
        <version>2.3.0version>
dependency>
 <dependency>
         <groupId>javax.activationgroupId>
         <artifactId>activationartifactId>
          <version>1.1.1version>
dependency>

4

趋势

从Java 11开始,OpenJDK major version的发布间隔差不多是半年,不用全部都要去关注,都是追赶,但是LTS版本,需要去追赶,去升级,Java11就是最新的LTS版本,下一个或者再一下major version,很可能又是一个LTS版本;虽然目前使用Java 8都挺好的,现实是Java 8的一些特性会被往后移植,但是后续版本的特性和优化不会再被集成到Java 8中了。

往期精彩回顾

MongoDB通配符索引

实习招聘|360云平台火热招聘中

360Stack裸金属服务器部署实践

579d6229385a218b520bfaccd4db7080.pngd5fa931454b780ba962aebb741228684.png

360技术公众号

技术干货|一手资讯|精彩活动

扫码关注我们

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/393633.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TCP建立连接

TCP的连接建立过程被称为三次握手:第一次握手&#xff1a;客户A的TCP向服务器B发出连接请求报文段,其首部中的同步位SYN 1 ,并选择序号seq x,表明传送| 数据时的第一 个数据字节的序号是X。第二次握手:B的TCP收到连接请求报文段后,如果同意,则发回确认。ACK1,其确认号ackx1。同…

webgl 着色器_如何使用AI,AR和WebGL着色器来帮助视障人士

webgl 着色器by Dan Ruta通过Dan Ruta 如何使用AI&#xff0c;AR和WebGL着色器来帮助视障人士 (How you can use AI, AR, and WebGL shaders to assist the visually impaired) Today, about 4% of the world’s population is visually impaired. Tasks like simple navigati…

计算机语言乍么设置,电脑如何设置语言

设置语言栏其实语言栏是用来进行输入法的切换的。当你需要在Windows中进行文字输入的时候,就需要用语言栏了,因为Windows的默认输入语言是英文,在这种情况下,你用键盘在文本里输入的文字会是英文字母,所以作为中国人的我们要想在Windows里输入中文的话,就需要语言栏的帮助了。试…

hive 初认识

结构Hive 是建立在hadoop上的数据仓库架构,它提供了一系列的工具,可以进行数据提取转换加载(这个过程叫做ETL),这是一种可以存储,查询和分析存储在hadoop中的大规模数据的机制.Hive定义了简单的类SQL查询语句 成为hql,他允许数据SQL的用户查询数据.同时 这个语言也允许数据mapr…

git使用(2)

1.远程仓库 a SSHKEY 第1步&#xff1a;创建SSH Key。在用户主目录下&#xff0c;看看有没有.ssh目录&#xff0c;如果有&#xff0c;再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件&#xff0c;如果已经有了&#xff0c;可直接跳到下一步。如果没有&#xff0c;打开Shel…

邮件中的商务英语

一、常见缩写 CC carbon copy&#xff1a;抄送 FYI for your information&#xff1a;供你参考 EOD end of the day BTW By the way&#xff1a;顺便提一下 COB close of the business 这两个词都是指下班前。需要催促某人在下班前给到回复的时候可以用用它们。 eg: Ple…

vue 横向菜单滚动定位_使用vue组件+iscroll实现一个横向菜单,不能正确滑动

使用vue组件iscroll实现一个横向菜单&#xff0c;可是却不能滑动&#xff0c;给父元素ul写死一个宽度可以滑动。但是&#xff0c;我在computed里计算宽度&#xff0c;直接路由进去不能滑动&#xff0c;当我进入别的组件(切换路由)回来又可以滑动了示例地址&#xff1a;http://o…

leetcode1353. 最多可以参加的会议数目(贪心算法)

给你一个数组 events&#xff0c;其中 events[i] [startDayi, endDayi] &#xff0c;表示会议 i 开始于 startDayi &#xff0c;结束于 endDayi 。 你可以在满足 startDayi < d < endDayi 中的任意一天 d 参加会议 i 。注意&#xff0c;一天只能参加一个会议。 请你返…

计算机组成原理实验读r1,计算机组成原理实验一

计算机组成原理实验一 (5页)本资源提供全文预览&#xff0c;点击全文预览即可全文预览,如果喜欢文档就下载吧&#xff0c;查找使用更方便哦&#xff01;8.90 积分计算机组成原理实验计算机组成原理实验第一章、TEC-5 计算机组成实验箱简介运算器运算器74181通用寄存器通用寄存器…

如何使用Kotlin构建具有在线状态的Android Messenger应用

by Neo Ighodaro由新Ighodaro When building a chat application, it is essential to have an online presence feature. It is essential because your users will like to know when their friends are online, and are more likely to respond to their messages in real …

Spark常见问题解决办法

以下是在学习和使用spark过程中遇到的一些问题&#xff0c;记录下来。 1、首先来说说spark任务运行完后查错最常用的一个命令&#xff0c;那就是把任务运行日志down下来。 程序存在错误&#xff0c;将日志down下来查看具体原因!down日志命令&#xff1a;yarn logs -application…

linux下安装php的swoole扩展模块(安装后php加载不出来?)

应开发同事要求&#xff0c;需要安装php的扩展模块swoole。 swoole是一种PHP高级Web开发框架&#xff0c;框架不是为了提升网站的性能&#xff0c;而是为了提升网站的开发效率&#xff0c;以最少的性能损耗&#xff0c;换取最大的开发效率。 假设服务器上php服务版本为php5.6.2…

autosar工具链_Autosar开发与手写代码开发的区别

Autosar开发流程1.BSW开发主要应用工具链&#xff08;Vector等工具&#xff0c;具体可以百度搜索Autosar配置工具&#xff09;来配置&#xff0c;复杂驱动的代码需要手写&#xff0c;但是也要符合Autosar的接口标准&#xff0c;主要包括&#xff0c;CAN通信配置、数字输入配置、…

山东计算机类好的民办大学,2021年山东所有民办大学名单及排名(教育部)

高考考上一个好的大学&#xff0c;是每位考生和家长的一个梦想,但是选择一个适合自己的大学也非常重要。本文高考助手网帮各位考生整理了关于山东本地区所有的民办大学名单、山东所有的民办大学分数线排名、山东民办大学文理科投档线等相关知识&#xff0c;各位考生在填报志愿的…

leetcode1536. 排布二进制网格的最少交换次数(贪心算法)

给你一个 n x n 的二进制网格 grid&#xff0c;每一次操作中&#xff0c;你可以选择网格的 相邻两行 进行交换。 一个符合要求的网格需要满足主对角线以上的格子全部都是 0 。 请你返回使网格满足要求的最少操作次数&#xff0c;如果无法使网格符合要求&#xff0c;请你返回 …

xml文档包含html代码_为什么文档很重要,以及为什么应将其包含在代码中

xml文档包含html代码There are a plethora of acronyms when it comes to software development. KISS, DRY, SOLID… and so on and so forth. But, when it comes to documenting or commenting your code, there is no simple catchphrase.关于软件开发&#xff0c;有很多首…

python 版本分布式锁

此文章&#xff0c;实现python 版本的分布式锁&#xff0c;java版本的可以使用curator很容易实现&#xff0c;python版本如下在做分布式系统开发的时候&#xff0c;分布式锁可以说是必需的一个组件。最近做了一些调研和尝试&#xff0c;经过对比&#xff0c;基于ZooKeeper的分布…

JavaScript数组(2)---遍历/迭代方法 8种

最近工作中经常涉及到数据的处理&#xff0c;数组尤其常见&#xff0c;经常需要对其进行遍历、转换操作&#xff0c;网上的文章零零散散&#xff0c;不得已自己又找出红宝书来翻出来看&#xff0c;顺便记一笔&#xff0c;便于以后查询。 数组常用的方法 ECMAScript5为数组定义了…

用例设计:思维导图orExcel

一、 某次紧急发版时使用思维导图来进行了用例的设计&#xff0c;很被导图多分支罗列、在单一分支上层层递进设计模式的吸引&#xff0c;最终看到由版本主题开枝散叶衍发出的结构性用例时非常开心。从此&#xff0c;几个版本的迭代都使用思维导图进行用例设计。 然而部门制度关…

class对象和class文件_Class文件格式

我们知道Java是一门跨平台的语言&#xff0c;我们编写的Java代码会被编译成中间class文件以让Java虚拟机解析运行。而Java虚拟机规范仅仅描述了抽象的Java虚拟机&#xff0c;在实现具体的Java虚拟机时&#xff0c;仅指出了设计规范。Java虚拟机的实现必须体现规范中的内容&…