jee jvm那个比较好,他们之间的区别和联系是什么?

作者&投稿:村金 (若有异议请与网页底部的电邮联系)
JDK,JRE和JVM的区别与相互之间的联系~

定义 JDK: Java Develpment Kit java 开发工具 JRE: Java Runtime Environment java运行时环境 JVM: java Virtual Machine java 虚拟机 2. 使用人群 jdk 是给开发人员使用的, jre和jvm是给普通用户使用 3. 详细介绍 JDK:是java开发工具包,是Sun公司针对java开发人员的产品,jdk中包含jre,在jdk的安装目录下有一个jre的目录,里面有两个文件夹bin和lib,在这里可以认为bin里面就是jvm,lib中是java工作需要的类库,而java和lib合起来就称为jreJRE: 是运行基于java语言编写的程序所不可缺少的运行环境,也是通过它,java的开发者才可以将自己开发的程序发布到用户手中,让用户使用,与大家熟悉的jdk不同,jre是运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器,调试器)等,知识针对使用java程序的用户 JVM: 就是我们常说的java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序首先被编译为.class文件,这种类文件可以在虚拟机上运行,也就是说class并不直接与机器的操作系统相对应。而是经过虚拟机间接的与操作系统交互,由虚拟机将程序解释给本地系统执行,只有jvm还不能将class执行,因为在解释class的时候jvm需要调用解释所需要的类库lib,而jre包含lib类库,jvm屏蔽了具体操作系统平台的相关信息,使得java程序只需要生成在java虚拟机上运行的目标代码。可以在多种平台(操作系统)上不加修改的运行 4. 关联关系简单来说就是JDK包含JRE,JRE包含JVM的关系

希望对您有所帮助!

一、名词说明
JVM,Java Virtual Machine,Java虚拟机
JDK,Java Development Kit,Java 语言的软件开发工具包(SDK)
JRE,Java Runtime Environment,Java运行环境
二、区别与联系

1)jvm有很多种,其实jvm是一个标准,sun做的那个叫hotspot,作者就是后来v8的作者lars bak,其他公司也做过jvm,其中做得比较好的有bea的jrockit,其他的包括ibm的r9,apple的jvm等在内,都做得不行,所以jvm主要是整合淘汰掉这些做得不好的jvm(s),整合成一个统一的openjdk。

2)java是典型的oop语言,其执行效率的优化,最早就是lars bak等人从smalltalk等长期优化的经验中总结出来并apply到hotspot上去滴,而smalltalk在早期apple机上搞出了那种拖拖拽拽就开发出app的做法,后来vc,delphi之类的其实都是抄袭或者说借鉴apple的smalltalk的做法,jobs说微软从头到尾都在抄袭apple是空穴来风,这里空穴来风跟王垠使用的空穴来风是一个意思,有趣的是,java的gui并没有继承这种搞法,反而对这种拖拖拽拽就作出app的做法批判有加,到今天,其实java的gui都还不能真正做到拖拖拽拽就作出来,问题很多,个人建议对于纯java的gui开发,还是以写代码为主。

3)jee也是一个或者说是一堆标准,知乎上有些人把maven,jenkins都算做jee是不对滴,jee的标准核心是ejb,其实就是一个xml配置化的java文件,这个标准在4的时候,达到了顶峰状态,几乎所有的挨踢大厂都主动支持该标准,之后开始走下坡路,支持的厂越来越少。

4)java和javascript的关系比很多人认为的要密切,javascript里面的java这四个字母可不是白叫的,比如js的版权和商标都控制在oracle手里,oracle对于js的支持甚至超过其对java的支持,并且喜欢捆绑销售,比如jvm里面就有一个js引擎。

5)jvm里面除了js engine以外还有一个浏览器排版引擎webkit,就是apple safari和google chrome用的那个那个。

6)java支持绝大多数脚本语言,你能叫得上名字的脚本语言,几乎都可以在jvm上执行,比如常见的js,ruby,python,甚至php,lua,只不过除了js以外你需要找到相关的脚本引擎。

7)spring的版权被控制在vmware手里,其实spring的那一大堆东西,本质上是一个非标准的jee实现,比如在jee里面用的inject,在spring里面就是autowire,当然spring曾经深刻滴影响了jee,所以有些东西比如di标准,是spring影响下制定出来的,所以spring的做法会比较特例一点。

8)maven上的jars数量前两天突破800万,其他语言的类库,排名第二的是npm,大概数量是maven的十分之一,也就是几十万,不知道现在突破100万没有,然后是gem,也就是ruby那个,大概是十几万,下来是python的module,大概数量级是几万,没突破十万。

9)java的标准是由一个叫做jcp的组织制定的,所有标准需要经过jcp的执行委员会通过方可执行,jcp几乎包括了你所知道的绝大多数知名挨踢公司和组织,比如google,apple,ibm,intel,arm,red hat,twitter等,还有一些教育机构,比如我国的北京大学,阿里最近一次申请jcp执行委员会成员资格,似乎投票不通过,最近一次执行委员会新增两个成员是arm和jetbrains。

10)微软也曾经是jcp甚至是java的主要贡献者,但是利益驱使下,想扩展java,从而破坏java跨平台的特性,所以跟sun闹翻,其本质原因就是想让客户写的java代码跟windows绑定,sun坚决不同意,闹翻,今天回头看这个结果,只能说:双输,sun挂了,微软的ria也离挂不太远了,silverlight已经放弃了,比起当年ie自带有jvm的支持来说,那完全就是两回事。

11)除了微软以外,jcp还缺少一个重要组织apache,因为apache跟oracle也闹翻了,oracle似乎并不在乎开源组织,而更在意商业公司的支持。

12)java曾经有一个内置的数据库,9之后被剥离。

13)j2me是j2se的子集。

14)vert.x作者tim fox最早在vmware做spring时候看到了node.js,萌生出了制作支持多核的node.x的想法,并在离开vmware后加入red hat将其实现,vmware看到后开始耍无赖,claim node.x后来改叫vert.x的版权,不惜跟red hat打官司,后来各方妥协,将其交给eclipse foundation。

15)oracle在收购bea之前,一开始的目标并不是bea和bea的weblogic,而是jboss,但是jboss表现出了极为有种的一面,在oracle收购成功之前,投入了red hat的怀抱,因为都是开源组织,从此jboss成了red hat的一个子部门,oracle收购jboss失败之后,转向bea,庄思浩气死了,但是没用,最后还是被恶意收购。

16)sun在玩不下去之前最早尝试接触的目标是ibm,ibm嫌太贵,放弃之后,被转手给了oracle。(Java学习交流QQ群:589809992 我们一起学Java!)

17)vert.x的作者tim fox在离开red hat之前曾经发过twitter抱怨,外人比如我们,猜测是因为red hat内部已经有了一个jboss,所以跟vert.x在应用上有了重叠,所以导致tim fox的出走,但是出走之后,red hat答应对vert.x做持续性的战略投入,所以vert.x core的几个developers,其实拿的是red hat的工资,但是vert.x的版权并不在red hat手里,而在eclipse foundation手里。

18)vert.x的几个核心开发人员都是google summer of code的导师,每年年初时候会招收在校大学生搞项目。

19)教育机构相关:scala的作者马丁是德国人,eth的博导,groovy的主要领导人是法国人,jruby背后是东京大学,jboss的作者是法国大学校x的校友,x就是伽罗瓦考不进去的那所大学,伽罗瓦进不了x,所以改读巴黎高师,tim fox毕业于帝国理工,主席去的那个,netty作者trustin lee是acm银牌,现在line工作,毕业于sky里面的延世大学,kotlin是毛子公司jetbrains的作品,看linkedin,很多人毕业自圣彼得堡大学,spring作者rod johnson是悉尼大学的音乐博士,hibernate作者gavin king是澳洲莫那什大学的数学本科毕业生,james gosling这种cmu和calgory的估计烂大街了,sun是斯坦福大学网络的意思,夹带两个私货,aspectj有一个维护小组在mcgill,hbase跟waterloo关系密切。

20)java早期被人认为慢,跟java坚持不用硬件加速渲染有关,死活就是不肯接入directx和opengl,7之后总算开窍,搞了一个图形引擎接入了directx/opengl。

21)casssandra是facebook做失败的项目,被贡献给了apache之后老树开花。

22)groovy被贡献给了apache,现在叫做apache groovy,ceylon被贡献给了eclipse,现在叫做eclipse ceylon。

23)netflix现在是java shop,之前是用.net的

先想到这么多,有空再写。



网页跑丢了




赞皇县13978959119: JDK,JRE,JVM区别与联系 -
裴瑗益恒: JDK : Java Development ToolKit(Java开发工具包).JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar).最主流的JDK是Sun公司发布的...

赞皇县13978959119: java和C#哪个比较好 -
裴瑗益恒: 现在最有前途的一般认为是java和c#如下面所述: C#诞生之日起,关于C#与Java之间的论战便此起彼伏,至今不辍.抛却Microsoft与Sun之间的恩怨与口角,客观地从技术上讲,C#与Java都是对传统面向对象程序设计在组件化软件时代的革新...

赞皇县13978959119: 现在c#和java哪个更好些? -
裴瑗益恒: Java早一些,他占领了微软的市场,所以微软就搞出来C#来,现在C#比较好些,但是说有潜力的还是Java的

赞皇县13978959119: Java 与 .net谁更强悍? -
裴瑗益恒: Java代码运行在JVM之上,JVM可以跨平台,因此,在Windows平台上运行良好的Java代码,可以很好的在Unix/Linux等各类平台上运行..Net的CLR只能在Windows平台上良好运行.注意是良好. Java有更多的企业服务资源.软件上有众多优秀的框架支撑,硬件上有众多优秀珐禒粹溉诔防达狮惮饯的服务器及数据库软件无缝匹配.因此在高端的企业应用中,Java更胜一筹. 而.Net在windows平台中,能够实现快速开发,同时还兼具强大的系统支持功能(系统级的API支持),这些在Java平台中都是望尘莫及的. 所以没有谁比谁更强悍,看应用场景了.

赞皇县13978959119: 写手游服务器,java和nodejs哪个好 -
裴瑗益恒: node开发快,运行的效率也算比较高,但是如果项目大了就容易乱,而且javascript不是静态类型的语言,要到运行时才知道类型错误,所以写的多了之后免不了会出现光知道有错但是找不到哪儿错的情况,所以测试就得些的更好更详细.java开发慢,习惯node、python、ruby这类语言的人会觉得java写半天主要都在写一堆没用的东西,不能像那三个语言那样把绝大部分精力都集中在程序逻辑本身.但是如果项目大、复杂的话,用java就不容易乱,管理起来比node省.

赞皇县13978959119: 零基础学前端还是java还是python? -
裴瑗益恒: 首推Java.真的,Python当然是好,但是对于一个新入门的人,最重要的是先找到工作不是吗?而找工作的话,Java无疑是最容易的.相比较PHP与Python而言,Java程序员的岗位需求要大的很多,对于跨行业的人而言,最困难的其实是第一...

赞皇县13978959119: JVM JRE, API JDK 有什么关系和区别?尤其是那个JDK 和JRE 的区别? -
裴瑗益恒: jre:Java Runtime Environment jdk:java developer's kit api:application program interface jvm:java virtual machine jre是JAVa运行环境,JDK是Java程序开发包,也就是说你写的JAVA是要靠JRE来运行的.而JRE在哪运行呢,就是JVM,jAVA虚拟机. 这个API和它们没什么关系,它是应用程序接口,是Windows给程序员接拱的接口函数.

赞皇县13978959119: JDK和JRE的区别是什么?它们各有什么作用? -
裴瑗益恒: JDK是JAVA开发工具,它不仅提供了JAVA程序所需的JRE,还提供了一系列的编译,运行等工具.JRE只是JAVA程序的运行环境,它最核心的内容就是JVM及核心类库,JDK的bin目录与JRE的bin目录最明显的区别就是JDK下面才有javac.

赞皇县13978959119: jdk和java虚拟机的区别 -
裴瑗益恒: JDK包含虚拟机和开发环境,具体解释如下:1.sdk和jdk和jre之间的区别:·SDK(Software Development Kit)一般指软件开发包,可以包括函数库、编译程序等. ·JDK(Java Development Kit)是面向JAVA开发人员使用的SDK,它提供了Java的...

赞皇县13978959119: JDK与JRE的区别并且分别都有什么作用 -
裴瑗益恒: 是java程序的运行环境.既然是运行,当然要包含jvm,也就是大家熟悉的虚拟机啦, development kit,是java的开发工具包,里面包含了各种类库和工具.当然也包括了另外一个Jre. 相信大家都知道jdk的bin下有各种java程序需要用到的命令,...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网