什么是Microsoft Build of OpenJDK

Java Development Kit (JDK) 是Sun公司(已被Oracle收购)针对Java开发员的软件开发工具包。自从Java推出以来,JDK已经成为使用最广泛的Java SDK(Software development kit)。

Java is heavily used by Microsoft with more than 500,000 JVMs running internally. The Java Engineering Group is very proud to contribute back to the Java ecosystem and help power workloads such as LinkedIn, Minecraft and Azure!

Microsoft will be making Microsoft Build of OpenJDK the default JVM for Azure managed services by the end of 2021

https://www.microsoft.com/openjdk

微软构建的OpenJDK是OpenJDK的免费分支,任何人都可以免费部署到任何地方。它包括用于x64服务器上的Java11的长期支持(LTS)二进制文件,以及macOSLinuxWindows上的桌面环境。ARM上的窗口还具有Java16的早期访问二进制文件。

微软为Java11构建的OpenJDK二进制文件基于OpenJDK源代码,遵循Eclipse采用项目使用的相同构建脚本,并针对Eclipse采用质量保证套件(包括OpenJDK项目测试)进行测试。我们的Java11二进制文件已通过Java11的Java技术兼容性套件(TCK),用于验证与Java11规范的兼容性。微软构建OpenJDK是爪哇生态系统中任何其他OpenJDK分布的简单替代。

微软为什么会贡献OpenJDK

微软与Java的爱恨情仇

微软与Java的爱恨情仇由来已久。早在1996年,为了消除Java诞生带来的威胁,微软研发了J++,并称其符合Java规范,与Java具有一样的语法和关键字,但是没有实现Java的RMI和JNI。后来,微软被Sun以“歧视使用Java软件,旨在维持其视窗操作系统的垄断地位,违反反垄断法”为由起诉,并败诉赔偿了两千万美元。

最近几年,微软转型云计算,拥抱开源。2014年,微软首次向OpenJDK贡献代码,内容关于Windows上TCP回环快速路径机制方面的优化。2018年10月,Oracle计划将OpenJDK的源码库迁移至GitHub。

2019年11月,微软正式宣布加入OpenJDK项目。Bruno Borges发布了一封邮件,具体信息可以在OpenJDK邮件列表中找到,微软正式签署《Oracle贡献者协议》,并表示期待未来参与Java的未来。

正式宣告贡献OpenJDK

在过去的一周中,微软正式签署了《甲骨文贡献者协议》,Oracle对我们参与该项目表示了认可及欢迎。我代表微软Java工程团队,很高兴正式加入OpenJDK项目,并期待与你们的合作。过去,如果以“微软”和“Java”为关键字进行搜索,出现的信息很少,且其中大部分也与微软如今对Java的态度相反。

在这封邮件中,Bruno Borges表示,微软及其子公司在许多方面都高度依赖Java,并在微软Azure中向客户提供Java运行时服务。微软已经认识到在Oracle成功有效管理下的OpenJDK项目所获得的价值,它收购了Java,得到了更广泛的软件生态系统,微软也期待做出自己的一份贡献。

由Martijn Verburg领导的Java工程团队已经与其他使用Java的微软组织及其子公司,还有Java生态系统中的合作伙伴(例如AzulSystems、Oracle、Pivotal、RedHat、Intel、SAP等)合作,整个团队将加入一些OpenJDK邮件列表并参与会话。我们期待参与Java的未来。

Bruno Borges曾经是Oracle的一名开发人员,现在担任微软Java的首席产品经理。他介绍了Java工程团队负责人,jClarity的首席执行官Martijn Verburg,而jClarity是AdoptOpenJDK的主要贡献者,后者于2019年8月被微软收购。

关于微软哪些产品在用Java

世界各地的开发人员都在学习通过Java进行编程,Java仍是企业中最常用的语言之一。它可帮助你解决所有级别的业务需求。全球有数百万的Java开发人员,Java的成功不言而喻。

Java是Azure选择的一种战略性语言。我们支持Java开发人员在多个级别部署其Java应用程序。无论你的体系结构如何,Azure都有适合你的解决方案(从单体式应用程序到微服务,甚至是无服务器应用程序)。

Microsoft一直以来都十分重视对Java和Azure上的Java的支持。你知道吗,Microsoft是OpenJDK的官方撰稿人。

Microsoft在其许多产品(如LinkedIn、Yammer、Minecraft和SurfaceDuo)中都使用了Java。

  • Apache Hadoop on Microsoft Azure - HDInsight from Hortonworks (company)
  • Minecraft (video game)
  • LinkedIn
  • Yammer
  • Surface Duo
  • Azure Spring Cloud
  • ...

Microsoft Build of OpenJDK路线图

Version MS Build of OpenJDK Release Date OpenJDK Release Date Supported Until At Least
Java 11 (LTS) May, 2021 September, 2018 October, 2024
Java 17 (LTS) TBA September, 2021 September, 2027

下载Microsoft OpenJDK

https://docs.microsoft.com/zh-cn/java/openjdk/download

Generally-available (GA) 版本 OpenJDK v11.0.11

平台 文件类型 下载链接
Linux x64 tar.gz microsoft-jdk-11.0.11.9.1-linux-x64.tar.gz
macOS x64 tar.gz microsoft-jdk-11.0.11.9.1-macos-x64.tar.gz
macOS x64 pkg microsoft-jdk-11.0.11.9.1-macos-x64.pkg
Windows x64 zip microsoft-jdk-11.0.11.9.1-windows-x64.zip
Windows x64 msi microsoft-jdk-11.0.11.9.1-windows-x64.msi

Generally-available (GA) 版本 OpenJDK v16.0.1

平台 文件类型 下载链接
Linux x64 tar.gz microsoft-jdk-16.0.1.9.1-linux-x64.tar.gz
macOS x64 tar.gz microsoft-jdk-16.0.1.9.1-macos-x64.tar.gz
macOS x64 pkg microsoft-jdk-16.0.1.9.1-macos-x64.pkg
Windows x64 zip microsoft-jdk-16.0.1.9.1-windows-x64.zip
Windows x64 msi microsoft-jdk-16.0.1.9.1-windows-x64.msi

安装Microsoft OpenJDK

基于Windows Msi安装包进行安装

https://aka.ms/download-jdk/microsoft-jdk-11.0.11.9.1-windows-x64.msi

基于WinGet安装Microsoft OpenJDK

如果你之前没有安装WinGet,你可以安装一个最新版的Windows Package Manager Preview,目前WinGet仅包括在它的预览版中。

winget install Microsoft.OpenJDK.11

Microsoft OpenJDK的Docker 容器镜像

可以从官方mcr服务器上拉取指定版本的容器镜像。

docker pull mcr.microsoft.com/openjdk/jdk:11-ubuntu

使用的DockerFile文件示例如下:

# Example using MS Build of OpenJDK image directly
FROM mcr.microsoft.com/openjdk/jdk:11-ubuntu # Continue with your application deployment
RUN mkdir /opt/app
COPY japp.jar /opt/app
CMD ["java", "-jar", "/opt/app/japp.jar"]

配置Microsoft OpenJDK

默认我们是需要手工把JDK的路径放到环境变量中的,如果你在前面的安装步骤已经勾选了那个选项就自动加了,如果没有就需要手工添加一下。

那么这里补充下手工处理的流程:

打开Windows10的设置,前往系统,切换到关于,找到右侧的高级系统设置

进入系统属性对话框之后,点击底部的环境变量,进入环境变量设置对话框。

切换到系统变量,点击新建按钮,添加名为JAVA_HOME的JDK路径项。

C:\Program Files\Microsoft\jdk-11.0.11.9-hotspot\

一路确定保存退出即可。

检查Microsoft OpenJDK

java -version

安装之后,最好重启一次终端,然后检查下Java的版本。

Visual Studio Code中使用Java

安装Java扩展包(Java Extension Pack)

想在Visual Studio Code中使用Java,微软已经为你准备好了一个开发大礼包扩展,名为Java扩展包(Java Extension Pack),有多香只有你用了才会知道。

https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-pack

这一个扩展包背后是很多扩展咯,都是你需要的。

开始使用Java(Getting Started)

使用Ctrl+Shift+P激活命令面板,输入Java关键词,找到Java: Getting Started这个命令项,回车即可,便会打开开始使用的说明页面,很贴心哦。

打开一个空白的演示目录

我们准备一个名为HelloOpenJdk的演示目录,用Visual Studio Code打开它。

新建一个带Main的Java文件并且运行

HelloOpenJdk目录中新建一个名为QuickStart.java的文件,内容如下:

class QuickStart {
public static void main(String[] args) {
System.out.println("Hello, World.");
}
}

直接按F5运行即可。

配置Java运行时(Java Runtime)

使用Ctrl+Shift+P激活命令面板,输入Java关键词,找到Java: Configure Java Runtime这个命令项,回车即可,便会打开配置Java运行时的设置界面。

默认我们首先打开的是Project JDKs标签页。

可以看到,目前默认JDK就是我们前面安装的Microsoft OpenJDK,如果需要我们可以切换到其他JDK去,记得切换后,需要点击底部的Reload Window才生效。

切换到Installed JDKs标签页,将看到所有已安装的JDK版本。

切换到Java Tooling Runtime标签页,将看到当前的Java Language Server设置。

安装Spring Boot扩展包(Spring Boot Extension Pack)

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

想在Visual Studio Code中使用Spring Boot,微软已经为你准备好了一个开发大礼包扩展,名为Spring Boot扩展包(Spring Boot Extension Pack),有多香只有你用了才会知道。

https://marketplace.visualstudio.com/items?itemName=Pivotal.vscode-boot-dev-pack

这一个扩展包背后是很多扩展咯,足够你启动一个Spring Boot项目了。

安装Eclipse MicroProfile扩展包(Extension Pack for MicroProfile)

Eclipse MicroProfile是一个Java微服务开发的基础编程模型,它致力于定义企业Java微服务规范,MicroProfile提供指标、API文档、运行状况检查、容错、JWT、OpenAPI与分布式跟踪等能力,使用它创建的云原生微服务可以自由地部署在任何地方,包括ServiceMesh架构,如Istio。

它是一个社区驱动的计划,用于定义企业Java微服务的规范。MicroProfile仅用了两年时间,但它已经提供了八项创新规范并且正在快速发展。它提供指标,API文档,运行状况检查,容错,分布式跟踪等。有了它,您可以充分利用尖端的云原生技术,并以供应商中立的方式实现!

想在Visual Studio Code中使用Eclipse MicroProfile,微软已经为你准备好了一个开发大礼包扩展,名为Eclipse MicroProfile扩展包(Extension Pack for MicroProfile),有多香只有你用了才会知道。

https://marketplace.visualstudio.com/items?itemName=MicroProfile-Community.vscode-microprofile-pack

这一个扩展包背后是很多扩展咯,足够你启动一个Eclipse MicroProfile项目了。

新建Java项目(Create Java Project)

使用Ctrl+Shift+P激活命令面板,输入Java关键词,找到Java: Create Java Project这个命令项,回车即可,便会打开创建Java项目的引导对话框界面。

然后选择你要创建的项目类型,这里为了方便,我们就选No build tools类型吧,选择一个项目目录位置。

然后输入项目名称,比如DemoOpenJDK

回车,一个最简单的Java项目就创建好了。

F5运行试试。

Microsoft Learn TV中学习Java

了解如何使用Azure服务在Azure上构建、迁移和缩放Java应用程序。使用你熟悉且喜爱的工具和框架-Spring、Tomcat、WildFly、JBoss、WebLogic、WebSphere、Maven、Gradle、IntelliJ、Eclipse、Jenkins、Terraform等。

Visual Studio Code创建Spring Boot项目

安装Spring Boot扩展包(Spring Boot Extension Pack)

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

想在Visual Studio Code中使用Spring Boot,微软已经为你准备好了一个开发大礼包扩展,名为Spring Boot扩展包(Spring Boot Extension Pack),有多香只有你用了才会知道。

https://marketplace.visualstudio.com/items?itemName=Pivotal.vscode-boot-dev-pack

这一个扩展包背后是很多扩展咯,足够你启动一个Spring Boot项目了。

创建Java项目

Ctrl+Shift+P进入控制面板,输入Java,选择Java: 创建Java项目

选择Spring Boot类型

选择仓库类型(Maven Project)

参考

乘风破浪,Java遇见OpenJDK GA(Build By Microsoft),即将晋升为Azure云管理服务默认JVM的更多相关文章

  1. Microsoft Azure 云存储服务概念

    本文包括了以下几点内容: 什么是Azure云存储服务? 云存储服务分类 云存储服务的优势 什么是Azure云存储服务? Azure 云存储服务可以说是Azure 上最重要的SAAS服务了. 在Azur ...

  2. 【Azure API 管理】APIM集成内网虚拟网络后,启用自定义路由管理外出流量经过防火墙(Firewall),遇见APIs加载不出来问题

    问题描述 使用 Azure 虚拟网络,Azure APIM 可以管理无法通过 Internet 访问的 API,达到以保护企业内部的后端API的目的.在虚拟网络中,启用网络安全组(NSG:Networ ...

  3. DEPLOYING NATIVE UWP (UNIVERSAL WINDOWS PLATFORM) APPS FOR JAVA DEVELOPERS & PUBLISHING THEM TO THE MICROSOFT STORE

    原文: DEPLOYING NATIVE UWP (UNIVERSAL WINDOWS PLATFORM) APPS FOR JAVA DEVELOPERS & PUBLISHING THEM ...

  4. CentOS 使用yum命令安装Java SDK(openjdk)

    CentOS 6.X 和 5.X 自带有OpenJDK runtime environment  (openjdk).它是一个在linux上实现开源的java 平台.CentOS  yum 命令 安装 ...

  5. java ant 编译打包build.xml完整配置范例

    java ant 编译打包build.xml完整配置范例 <?xml version="1.0" encoding="UTF-8" ?> <p ...

  6. JAVA遇见HTML——JSP篇(JavaBeans)

    1.像使用普通java类一样,创建javabean实例,利用构造方法创建实例 跟表单关联,“*”表示根据名称来进行匹配,就是根据表单所提交过来的参数的名字和Javabean当中的属性名字来进行一一匹配 ...

  7. 乘风破浪,遇见下一代操作系统Windows 11,迄今为止最美版本,原生支持安卓应用

    遇见下一代操作系统Windows 11 全新Windows体验,让您与热爱的人和事物离得更近. Windows一直是世界创新的舞台.它是全球企业的基石,助力众多蓬勃发展的初创公司变得家喻户晓.网络在W ...

  8. java入门时的一些基本概念的理解(j2ee,j2se,j2me,jdk,sdk,jre,jvm,跨平台)

    首先声明,这篇文章是从网上粘贴过来的.原文地址是:http://www.cnblogs.com/wangaohui/archive/2012/11/28/2791999.html.感觉写的很好,所以粘 ...

  9. Java升级那么快,多个版本如何灵活切换和管理?

    前言 近两年,Java 版本升级频繁,感觉刚刚掌握 Java8,写本文时,已听到 java14 的消息,无论是尝鲜新特性(Java12 中 Collectors.teeing 超强功能使用),还是由于 ...

随机推荐

  1. Django(31)模板中常用的过滤器

    模版常用过滤器 在模版中,有时候需要对一些数据进行处理以后才能使用.一般在Python中我们是通过函数的形式来完成的.而在模版中,则是通过过滤器来实现的.过滤器使用的是|来使用. add 将传进来的参 ...

  2. Flink使用二次聚合实现TopN计算

    一.背景说明: 有需求需要对数据进行统计,要求每隔5分钟输出最近1小时内点击量最多的前N个商品,数据格式预览如下: 543462,1715,1464116,pv,1511658000 662867,2 ...

  3. [bug] org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length = 2

    原因 SpringBoot启动加载yml配置文件出现编码格式错误 参考 https://www.pianshen.com/article/2431144034/

  4. [Python] RPC实现

    单线程同步 使用socket传输数据 使用json序列化消息体 struct将消息编码为二进制字节串,进行网络传输 消息协议 1 // 输入 2 { 3 in: "ping", 4 ...

  5. [转载]屏幕PPI、分辨率到底需要多大才能满足?

    屏幕PPI.分辨率到底需要多大才能满足? 郝蛋儿 江湖骗子 13 人赞同了该文章 最近想买一个43寸的电视,720P和1080P差了500大洋.我不禁纠结了起来.看网上争得面红耳赤,有的人说不如108 ...

  6. 9.4-6 kill & killall & pkill

    kill:终止进程 能够终止你希望停止的进程. kill 命令的参数选项及说明 -l    列出全部的信号名称 -p    指定kill命令只打印相关进程的进程号,而不发送任何信号 -s    指定要 ...

  7. STM32进阶日志1

    一 工程习惯 ①必须模块化编程-一个功能一个CH分开,一个对象一个结构体; ②习惯使用bsp.c/bsp.h,BSP板级支持包源文件; ③多使用#define 来定义IO口与硬件相关特性,方便修改; ...

  8. 服务器RAID配置

    一.RAID介绍RAID是Redundent Array of Inexpensive Disks的缩写,直译为"廉价冗余磁盘阵列",也简称为"磁盘阵列".后来 ...

  9. Stream中的Peek操作

    1.引言 如果你试图对流操作中的流水线进行调试, 了解stream流水线每个操作之前和操作之后的中间值, 该如何去做? 首先我们看一个例子, 使用forEach将流操作的结果打印出来. 1 /** 2 ...

  10. Spring Cloud Alibaba系列之分布式服务组件Dubbo

    本博客的例子代码可以在github找到下载链接:代码下载 SpringBoot.SpringCloud Alibaba系列博客专栏:链接 1.分布式理论 1.1.分布式基本定义 <分布式系统原理 ...