当前位置: 首页 > 科技观察

什么是JavaSE?生产环境安装了JDK还是JRE?

时间:2023-03-16 12:42:29 科技观察

前言大家好,我是A哥(YourBatman)。看完上一篇,什么是JavaEE还是没说完,在催促下我也一口气把JavaSE拿下来了。如果说搞JavaEE是难治的,但JavaSE一定是永恒的。JVM、JRE和JDK是最常用的J系列首字母缩略词,那么JDK8和Java8是一回事吗?JavaSE8有时真的不清楚。含糊其词难免让“别人”觉得不专业,这篇文章需要几分钟才能看懂。所属专栏BATutopia-JavaEE相关下载JavaEE项目源码:https://github.com/yourbatman/BATutopia-java-eeJSR-JCP项目源码:https://github.com/yourbatman/JSR-JCPJSR文件网盘下载:https://wangpan.yourbatman.cn/s/nRtq密码:jsrjcp版本约定JavaSE8(notOpenJDK)正文什么是Java技术?Java技术既是一种编程语言又是一个平台。Java语言的主要特点是:简单面向对象分布式多线程高性能(编译,非解释)健壮和安全在Java编程语言中,所有源代码首先以纯文本文件编写,以.Java扩展名结尾.这些源文件被javac编译器编译成.class文件,.class文件不包含处理器的本地代码(即与本地操作系统无关)。相反,它包含字节码->JVM机器语言,然后.class在特定的JVM虚拟机上运行。由于不同的操作系统都有对应各自平台的JVM,因此一段Java代码(一段.class字节码)可以运行在不同的操作系统上,达到跨平台的目的。俗话说Java是跨平台语言,JVM是跨语言平台。API和Java虚拟机将程序与底层硬件隔离,使程序独立。JVM、JRE、JDK的关系其实就是这个问题的答案。官方已经很准确的给出了答案,可能很少有人去关注。在这里我强调一下,一切都来自官方图片:这张图是否清晰明了地说明了JVM、JRE、JDK之间的关系?我们把这段关系简单化一下:一目了然嘛,他们是夹杂关系的兄弟。什么是JVM?Java虚拟机:Java虚拟机。负责支持的Java应用程序的执行,这是Java实现一处编写,到处运行的保证。起初,JVM只是作为Java语言的运行环境。现在已经发展成为可以支持Kotlin、Groove等多种语言运行的平台。每个操作系统(Windows、Linux、MacOS)都有自己的JVM实现,屏蔽了应用程序对底层OS的感知,Java才有跨平台的能力。值得注意的是,JVM是一种规范,允许不同的供应商实现自己的JVM。当然Sun/Oracle官方也有,那就是Hotspot虚拟机。它是SunJDK和OpenJDK自带的虚拟机,也是使用最广泛的Java虚拟机。除此之外,比较出名的还有IBM的J9VM、Android上的KVM、微软的MicrosoftJVM、Oracle的JRockitVM(现在和Hotspot合并了)……我们熟悉的CMS、G1、ZGC都是官方的Garbagecollection算法是JVM的核心性能指标。什么是JRE?JavaRuntimeEnvironment:Java运行时环境。Java程序高效运行的工具(环境),同样与底层OS系统版本绑定。我们常用的API都在这里,比如rt.jar,比如这些包名:Java是一种保守的语言,所以JRE在向后兼容方面一直非常谨慎,而且非常非常好。基于此可以看出,官方一直建议大家升级到最新版本,以获得更好的性能和安全性能。可以看到JavaSE已经发布到16/17版本了,但是:你们随便贴吧,我用的是Java8。Sun官方提供了JRE的单独下载。如果你只是想运行一个编辑/打包的Java程序,使用JRE就足够了。它体积更小,更易于下载和安装。大小差异不小:“以JavaSE8u291版本为例:JRE只有87m,而对应的JDK高达271m,3倍多。”什么是JDK?JavaDevelopmentKit:Java开发工具包,其中包含JRE。新手注意,这是一个知识点:如果安装了JDK,则不需要另外安装JRE。可以认为JDK是JRE的扩展,JRE是开发者开发Java程序的工具包。它包括编译器javac、Javadoc工具、debugger断点调试工具、javap反编译工具等等,更多的,看官网就可以了:https://docs.oracle.com/javase/8/docs/technotes/tools为了阅读的方便,这里给大家展示一下JDK工具的截图。您应该能够看到许多熟悉的工具,并且您已经使用了其中的许多工具而没有意外。虽然JDK提供了很多好用的工具,但是现在我们开发者好像用的越来越少了,这也是为什么看到上图你还是很陌生的原因。这些JDK工具大部分都可以“替代”,例如:使用Maven/Gradle完成自动编译(底层可以是Javac或eclipse的jdt)使用IDE集成开发工具完成自动编译(如IDEA、Eclipse等).)使用IDE调试程序(如IDEA、Eclipse等)使用IDE查看运行时内存信息(如IDEA)...总之,集成开发环境IDE越来越强大,让开发者可以直接通过图形界面操作提高效率,间接使用JDK工具越来越少。这并不是“好消息”,因为在IDE分离的场景下,仍然需要原生工具,比如在线部署环境。生产环境应该安装JDK还是JRE?一般来说,线上环境只会丢一个jar/war包(或者产品库)直接运行。无法在上面调试和编码,那么使用更轻量级的JRE更合适?不!生产环境应该安装JDK而不是JRE!!!原因如下:1、JDK是JRE的超集,只是功能多了很多。2、JDK相对于JRE的缺点是安装时间长点,占用硬盘空间大。但相比之下,这根本算不上劣势。JDK只需要安装一次,不管安装多长时间都会占用大量硬盘空间,jinfo、jps等,相信有经验的程序员对这些“实用小工具”都不陌生4.JDK有一个可以实现“动态编译”的编译器第一次访问时,通过JSP->Servlet->.class文件,通过网络动态读取一些.java文件。这时候也需要试试运行时的编译能力。单独的JRE没用吗?当然,桌面程序就是一个典型的例子。比如Java程序员最常用的IntelliJIDEA自带JRE(桌面程序根本不需要安装JDK),当然还有Eclipse(老版本的Eclipse必须依赖本地JRE环境运行,新版本已经是和IDEA一样的环境了)。Oracle的JDK是免费的吗?答:不会。您可能听说过Oracle将开始对JDK收费。早在2019年4月,Oracle就为JDK8发布了两个更新补丁:8u211和8u212。记住这两个特殊版本。作为小版本,功能上肯定没有太大变化。重点是:新版本的许可协议已经从BCL变成了OTN,这意味着你将无法在生产环境中使用新/更新版本的JDK。如果你想使用它,你必须付费。好吧,这很Oracle:先购买,后收费。BCLvsOTNLicenseAgreementBCLLicenseAgreement:OracleBinaryCodeLicenseAgreementfortheJavaSEPlatformProductsandJavaFX(OracleBinaryCodeLicenseAgreementfortheJavaSEPlatformProductsandJavaFX)。简而言之:它是一个开放的协议,只要您同意就可以免费使用。除了不能修改外,私人和商业使用都可以。OTN许可协议:OracleTechnologyNetworkLicenseAgreementforOracleJavaSE(甲骨文技术网许可协议forOracleJavaSE)。简而言之:是商业授权协议,必须付费授权才能商业使用(私用免费),否则...为了了解你当前使用的JDK是否需要付费,这里有一张表,一目了然:哎,默默查看一下你服务器上的JDK版本,你中招了吗?收费标准自从JDK开始收费,是不是很贵?先看一下目前的收费标准:桌面版:类似windows,一人一个,按设备/人头数计算。200元/人/年(人数超过5万人,联系Oracle销售代表,优惠更大)服务器版:用于服务器、云计算等,按机器数量计算,每台机器2000元/台年(如果数量超过20,000台机器,请联系Oracle销售代表以获得更大的折扣)。可能你会觉得奇怪:我还没有看到任何个人/公司为此买单。为什么你是胖四?答:这是因为你在中国,就像你付了windows的钱一样?除了大企业、国企、央企……当然,做Java开发不用Oracle的JDK也不是不行,OpenJDK嘛。比如比较流行的有:阿里巴巴的dragonwell,亚马逊的Corrett,华为的必胜JDK,腾讯的Kona,IBM的JDK...附:OracleJDK下载方法这完全是献给刚学Java的初学者的,不瞒你说说随着Oracle改变了JDK的下载方式(隐藏的更深,需要登录等),不止一次一个工作了N年的同事为了下一个JDK搞了半天(真是半天).1、Java官网下载这里指的是知名域名java.com,又名Java官网。有了这样一个nx域名,现在好像只能做一件事:提供JRE下载下载页面地址:https://www.java.com/zh-CN/download特点:无需登录,下载非常方便只有JRE可以下载了8版本(毕竟现在8还是主流),如果不能下载update,只能下载JRE,不能下载JDK(如果这里能直接下载JDK,那应该没问题与Oracle的官方网站)。从oracle服务器下载的文件2.从Oracle官网下载是最权威的,也是Java开发者下载JDK的首选方式。在这里可以下载Java16、Java11、Java8、Java7等所有版本,这里以Java8为例:当然,下载时“大字报”提示需要付费:下载页面:https://www.oracle.com/cn/java/technologies/javase-downloads.html特点:需要登录才能下载(也就是说你必须有oracle账号并登录)可以下载所有版本的JDK和JRE小细节:从java.com和oracle官网下载的jre是同一个文件(文件名和大小一样),只是下载地址略有不同(大概是为了区分:一个需要登录,另一个不需要登录#128516;)3.BAT网盘下载不限速下载,排除干扰精准定位,推荐使用,推荐使用。下载页面:https://wangpan.yourbatman.cn/s/rEH0密码:javakit特点:无需登录直接下载国内服务器,可以下载到最新的JRE,不限速,不限速,不限速limit,JDK,IDEA,Datagrid等常用开发工具,没有限速,更不用说下载速度了(下载速度一般是上传速度的10倍),我只附上我上传速度的截图,我知道这个下载体验可好何等酸爽:另:BAT网盘强大的不限速和存储任何东西(包括种子)的特性,现已开放注册。详见此文:每人1G超小容量,“BAT网盘”免费帮你做减法4、天空软件、点点软件、CSDN下载“其他软件平台”,强烈不推荐!综上所述,本文可以算是一篇合格的科普文章。这些基础知识就像我们小时候背下来的一样。和古诗一样,是根基中的根基。了解的多一些,就可以讲的专业一些,尤其是热衷于培训的,可以讲的专业一些。