当前位置: 首页 > news >正文

网站建设与制作教程北华大学什么网站加盟代理做的专业

网站建设与制作教程北华大学,什么网站加盟代理做的专业,可信网站必须做吗,徐州免费建站模板在介绍 java9 之前#xff0c;我们先来看看java成立到现在的所有版本。 1990年初#xff0c;最初被命名为Oak#xff1b;1995年5月23日#xff0c;Java语言诞生#xff1b;1996年1月#xff0c;第一个JDK-JDK1.0诞生#xff1b;1996年4月#xff0c;10个最主要的操作系…在介绍 java9 之前我们先来看看java成立到现在的所有版本。 1990年初最初被命名为Oak1995年5月23日Java语言诞生1996年1月第一个JDK-JDK1.0诞生1996年4月10个最主要的操作系统供应商申明将在其产品中嵌入Java技术1996年9月约8.3万个网页应用了Java技术来制作1997年2月18日JDK1.1发布1997年4月2日JavaOne会议召开参与者逾一万人创当时全球同类会议纪录1997年9月JavaDeveloperConnection社区成员超过十万1998年2月JDK1.1被下载超过2,000,000次1998年12月8日Java 2企业平台J2EE发布1999年6月SUN公司发布Java三个版本标准版J2SE、企业版J2EE和微型版J2ME2000年5月8日JDK1.3发布2000年5月29日JDK1.4发布2001年6月5日Nokia宣布到2003年将出售1亿部支持Java的手机2001年9月24日J2EE1.3发布2002年2月26日J2SE1.4发布此后Java的计算能力有了大幅提升2004年9月30日J2SE1.5发布成为Java语言发展史上的又一里程碑。为了表示该版本的重要性J2SE1.5更名为Java SE 5.02005年6月JavaOne大会召开SUN公司公开Java SE 6。此时Java的各种版本已经更名以取消其中的数字“2”J2EE更名为Java EEJ2SE更名为Java SEJ2ME更名为Java ME2006年12月SUN公司发布JRE6.02009年4月20日甲骨文以74亿美元的价格收购SUN公司取得java的版权业界传闻说这对Java程序员是个坏消息其实恰恰相反2010年11月由于甲骨文对Java社区的不友善因此Apache扬言将退出JCP2011年7月28日甲骨文发布Java SE 72014年3月18日甲骨文发表Java SE 82017年7月甲骨文发表Java SE 9。 Java9包含了很多新的特性以下仅列出来最重要的部分 1. Java 平台级模块系统 Java 9 的定义功能是一套全新的模块系统。当代码库越来越大创建复杂盘根错节的“意大利面条式代码”的几率呈指数级的增长。这时候就得面对两个基础的问题: 很难真正地对代码进行封装, 而系统并没有对不同部分也就是 JAR 文件之间的依赖关系有个明确的概念。每一个公共类都可以被类路径之下任何其它的公共类所访问到, 这样就会导致无意中使用了并不想被公开访问的 API。此外类路径本身也存在问题: 你怎么知晓所有需要的 JAR 都已经有了, 或者是不是会有重复的项呢? 模块系统把这俩个问题都给解决了。 模块化的 JAR 文件都包含一个额外的模块描述器。在这个模块描述器中, 对其它模块的依赖是通过 “requires” 来表示的。另外, “exports” 语句控制着哪些包是可以被其它模块访问到的。所有不被导出的包默认都封装在模块的里面。如下是一个模块描述器的示例存在于 “module-info.java” 文件中: module blog {exports com.pluralsight.blog;requires cms; } 我们可以如下展示模块 请注意两个模块都包含封装的包因为它们没有被导出使用橙色盾牌可视化。 没有人会偶然地使用来自这些包中的类。Java 平台本身也使用自己的模块系统进行了模块化。通过封装 JDK 的内部类平台更安全持续改进也更容易。 当启动一个模块化应用时 JVM 会验证是否所有的模块都能使用这基于 requires 语句——比脆弱的类路径迈进了一大步。模块允许你更好地强制结构化封装你的应用并明确依赖。你可以在这个课程中学习更多关于 Java 9 中模块工作的信息 。 2. Linking 当你使用具有显式依赖关系的模块和模块化的 JDK 时新的可能性出现了。你的应用程序模块现在将声明其对其他应用程序模块的依赖以及对其所使用的 JDK 模块的依赖。为什么不使用这些信息创建一个最小的运行时环境其中只包含运行应用程序所需的那些模块呢 这可以通过 Java 9 中的新的 jlink 工具实现。你可以创建针对应用程序进行优化的最小运行时映像而不需要使用完全加载 JDK 安装版本。 3. JShell : 交互式 Java REPL 许多语言已经具有交互式编程环境Java 现在加入了这个俱乐部。您可以从控制台启动 jshell 并直接启动输入和执行 Java 代码。 jshell 的即时反馈使它成为探索 API 和尝试语言特性的好工具。 测试一个 Java 正则表达式是一个很好的说明 jshell 如何使您的生活更轻松的例子。 交互式 shell 还可以提供良好的教学环境以及提高生产力您可以在此了解更多信息。在教人们如何编写 Java 的过程中不再需要解释 “public static void mainString [] args” 这句废话。 4. 改进的 Javadoc 有时一些小事情可以带来很大的不同。你是否就像我一样在一直使用 Google 来查找正确的 Javadoc 页面呢 这不再需要了。Javadoc 现在支持在 API 文档中的进行搜索。另外Javadoc 的输出现在符合兼容 HTML5 标准。此外你会注意到每个 Javadoc 页面都包含有关 JDK 模块类或接口来源的信息。 5. 集合工厂方法 通常您希望在代码中创建一个集合例如List 或 Set 并直接用一些元素填充它。 实例化集合几个 “add” 调用使得代码重复。 Java 9添加了几种集合工厂方法 SetInteger ints Set.of(1, 2, 3); ListString strings List.of(first, second);除了更短和更好阅读之外这些方法也可以避免您选择特定的集合实现。 事实上从工厂方法返回已放入数个元素的集合实现是高度优化的。这是可能的因为它们是不可变的在创建后继续添加元素到这些集合会导致 “UnsupportedOperationException” 。 6. 改进的 Stream API 长期以来Stream API 都是 Java 标准库最好的改进之一。通过这套 API 可以在集合上建立用于转换的申明管道。在 Java 9 中它会变得更好。Stream 接口中添加了 4 个新的方法dropWhile, takeWhile, ofNullable。还有个 iterate 方法的新重载方法可以让你提供一个 Predicate (判断条件)来指定什么时候结束迭代 IntStream.iterate(1, i - i 100, i - i 1).forEach(System.out::println);第二个参数是一个 Lambda它会在当前 IntStream 中的元素到达 100 的时候返回 true。因此这个简单的示例是向控制台打印 1 到 99。 除了对 Stream 本身的扩展Optional 和 Stream 之间的结合也得到了改进。现在可以通过 Optional 的新方法 stram 将一个 Optional 对象转换为一个(可能是空的) Stream 对象 StreamInteger s Optional.of(1).stream();在组合复杂的 Stream 管道时将 Optional 转换为 Stream 非常有用。 7. 私有接口方法 Java 8 为我们带来了接口的默认方法。 接口现在也可以包含行为而不仅仅是方法签名。 但是如果在接口上有几个默认方法代码几乎相同会发生什么情况 通常您将重构这些方法调用一个可复用的私有方法。 但默认方法不能是私有的。 将复用代码创建为一个默认方法不是一个解决方案因为该辅助方法会成为公共API的一部分。 使用 Java 9您可以向接口添加私有辅助方法来解决此问题 public interface MyInterface {void normalInterfaceMethod();default void interfaceMethodWithDefault() { init(); }default void anotherDefaultMethod() { init(); }// This method is not part of the public API exposed by MyInterfaceprivate void init() { System.out.println(Initializing); } }如果您使用默认方法开发 API 那么私有接口方法可能有助于构建其实现。 8. HTTP/2 Java 9 中有新的方式来处理 HTTP 调用。这个迟到的特性用于代替老旧的 HttpURLConnection API并提供对 WebSocket 和 HTTP/2 的支持。注意新的 HttpClient API 在 Java 9 中以所谓的孵化器模块交付。也就是说这套 API 不能保证 100% 完成。不过你可以在 Java 9 中开始使用这套 API HttpClient client HttpClient.newHttpClient();HttpRequest req HttpRequest.newBuilder(URI.create(http://www.google.com)).header(User-Agent,Java).GET().build();HttpResponseString resp client.send(req, HttpResponse.BodyHandler.asString());HttpResponse resp client.send(req, HttpResponse.BodyHandler.asString()); 除了这个简单的请求/响应模型之外HttpClient 还提供了新的 API 来处理 HTTP/2 的特性比如流和服务端推送。 9. 多版本兼容 JAR 我们最后要来着重介绍的这个特性对于库的维护者而言是个特别好的消息。当一个新版本的 Java 出现的时候你的库用户要花费数年时间才会切换到这个新的版本。这就意味着库得去向后兼容你想要支持的最老的 Java 版本 (许多情况下就是 Java 6 或者 7)。这实际上意味着未来的很长一段时间你都不能在库中运用 Java 9 所提供的新特性。幸运的是多版本兼容 JAR 功能能让你创建仅在特定版本的 Java 环境中运行库程序时选择使用的 class 版本 multirelease.jar ├── META-INF │ └── versions │ └── 9 │ └── multirelease │ └── Helper.class ├── multirelease├── Helper.class└── Main.class在上述场景中 multirelease.jar 可以在 Java 9 中使用, 不过 Helper 这个类使用的不是顶层的 multirelease.Helper 这个 class, 而是处在“META-INF/versions/9”下面的这个。这是特别为 Java 9 准备的 class 版本可以运用 Java 9 所提供的特性和库。同时在早期的 Java 诸版本中使用这个 JAR 也是能运行的因为较老版本的 Java 只会看到顶层的这个 Helper 类。 10. 统一 JVM 日志 Java 9 中 JVM 有了统一的日志记录系统可以使用新的命令行选项-Xlog 来控制 JVM 上 所有组件的日志记录。该日志记录系统可以设置输出的日志消息的标签、级别、修饰符和输出目标等。 11. Java 9 的垃圾收集机制 Java 9 移除了在 Java 8 中 被废弃的垃圾回收器配置组合同时把G1设为默认的垃圾回收器实现。替代了之前默认使用的Parallel GC对于这个改变evens的评论是酱紫的这项变更是很重要的因为相对于Parallel来说G1会在应用线程上做更多的事情而Parallel几乎没有在应用线程上做任何事情它基本上完全依赖GC线程完成所有的内存管理。这意味着切换到G1将会为应用线程带来额外的工作从而直接影响到应用的性能 12. I/O 流新特性 java.io.InputStream 中增加了新的方法来读取和复制 InputStream 中包含的数据。 readAllBytes读取 InputStream 中的所有剩余字节。readNBytes 从 InputStream 中读取指定数量的字节到数组中。transferTo读取 InputStream 中的全部字节并写入到指定的 OutputStream 中 。 示例 public class TestInputStream {private InputStream inputStream; private static final String CONTENT Hello World; Before public void setUp() throws Exception { this.inputStream TestInputStream.class.getResourceAsStream(/input.txt); }Test public void testReadAllBytes() throws Exception { final String content new String(this.inputStream.readAllBytes()); assertEquals(CONTENT, content); } Test public void testReadNBytes() throws Exception { final byte[] data new byte[5]; this.inputStream.readNBytes(data, 0, 5); assertEquals(Hello, new String(data)); } Test public void testTransferTo() throws Exception { final ByteArrayOutputStream outputStream new ByteArrayOutputStream(); this.inputStream.transferTo(outputStream); assertEquals(CONTENT, outputStream.toString()); } }
http://www.zqtcl.cn/news/378568/

相关文章:

  • 营销企业网站建设步骤建筑 企业官网设计
  • 网站建设的内容网站怎么做视频的软件
  • 大型网站多少钱企业咨询管理是干嘛的
  • 陕西建设银行网站小企业网站建设公司
  • linux下网站开发计算机网络技术专业主要学什么
  • 长沙网站维护公司建个门户网站
  • 做采集网站难不做科技的网站
  • 中小微企业服务平台seo怎么提升关键词的排名
  • 优秀企业网站欣赏店名设计wordpress文章列表添加字段
  • 有哪些做软件的网站服务器安装WordPress没有权限访问
  • app开发和网站开发公司网站怎么做百度竞价
  • 医疗机构网站备案网站建设面试常见问题
  • 建设网银登录网站国内欣赏电商设计的网站
  • 自适应网站优点缺点网站上的在线答题是怎么做的
  • 查询单位信息的网站免费学编程的网站有哪些
  • 建设企业网站进去无法显示wordpress 在线课程
  • 博客型网站建设广州网站建设如何做
  • 网站导航栏全屏怎么做万年网站建设
  • flash源码网站百度关键词价格
  • 个人网站如何发布怎么做记步数的程序到网站
  • 石家庄网站制作公司排名前十可视化网站开发工具有哪些
  • 网站个人博客怎么做杭州网站改版公司电话
  • 烟台北京网站建设公司中国建筑信息资讯网
  • 硬盘做网站空间高端网站设计杭州
  • 南昌网站建设方案网站建设需求分析班级
  • 汉阳做网站关键词站长工具
  • 做海报图片的网站营销软件
  • 能先做网站再绑定域名吗石家庄公司建设网站
  • 设计网站的收费图是怎么做的公司网站简介怎么做
  • 医院网站案例结合七牛云做视频网站