2018-04-28

Write Once,run anywhere

为了让Java能够实现跨平台,Java的发明者们增加了一个抽象层,即JVM(Java Virtual Machine,Java虚拟机),自定义一套指令并且和硬件无关,为每个操作系统实现一套JVM,通过JVM实现了Java的跨平台。需要注意的是目前有很多语言都是在JVM上实现的,例如Scala、Groovy、Clojure、JRuby、Jython等,这些语言通过映射到JVM的指令集上就实现了在JVM上运行。


JRE和JDK之间的关系?

JRE(Java Runtime Environment),可以认为就是JVM;JDK(Java Development Kit)是Java开发工具包,它包含javac、jar、JRE,所以JDK是包含jre。

Java SE,Java EE ,Java ME之间是什么关系?

Java SE(Standard Edition,标准版),它提供了Java API;Java EE(Enterprise Edition,企业版),它包含Web相关技术(Jsp、servlet、jdbc、ebj、jtc);Java ME(Mobile Edition,移动版),考虑到SE需要很多计算机的资源,因此ME使用了SE部分功能,它在Iphone和安卓出来之前,Java ME是很火的,目前基本没人在用了。

注解(Annotation)

注解可以改变类型的定义,例如现在比较有名的lombok,它在编译源代码是修改AST(抽象语法树)来实现目标,比如说给POJO自动实现get方法、set方法和toString方法等。

具体代码如下:

public @Data class Demo{ private String name;}@Target(ElementType.TYPE)@Retention(RetentionPolicy.SOURCE)public @interface Data{ String staticConstructor() default " ";}

源代码编译之后:

public class Demo{ private String name; public Demo(){ } public String getName(){ return name; } public void setName(String name){ this.name = name; } public int hashCode(){ ... } public String toString(){ ... }}

泛型(Generics)

为了将代码尽可能的复用,除了使用多态性以外,我们还经常使用泛型。多态是在运行时处理的,而泛型是在编译时就获取到具体的类型,同时,一旦编译完成,所有和泛型有关的类型全部擦除,这样做的好处是使用类型推导避免强制类型转换,和编译期的类型安全检查。

public void test(){ List list = Arrays.asList(1,2,3); list.add(4); int i = list.get(0);}

类型檫除之后,JVM完成类型转换。

 public void test(){ List list = Arrays.asList(1,2,3); list.add(4); int i = (Integer)list.get(0);}

反射(Reflection)

上面介绍的注解和泛型都是发生在编译期,而接下来要介绍的反射发生在运行时的。我们知道每个java文件都会被编译成一个.class文件,这些class文件会被JVM装入到虚拟机中,接着,JVM会把类的信息(包括父类、接口、构造函数、方法、属性等)存放到方法区中,所以,在运行时我们可以查看到类的所有信息。

常见的方法有: // 获取所有级别的字段Field[] fields = clz.getDeclaredFields();// 获取public字段for(int i =0;i

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,288评论 19 139
  • Scala与Java的关系 Scala与Java的关系是非常紧密的!! 因为Scala是基于Java虚拟机,也就是...
    灯火gg阅读 8,861评论 1 24
  • 插科打诨完,我放下一句要看东西就准备溜走自己玩儿,豆说先别跑问个事,发来一个男模图,指着衬衫问我喜欢这件衬衫吗?我...
    张哩哩呢阅读 1,337评论 0 0
  • 断,谋,辩。 开启第四部的首个收获,一个领导者或一个团队,成功必须具备的三个能力,1:果断 2:谋略 3:善辩。不...
    我是财迷阅读 1,526评论 0 0
  • 远离颠倒梦想,究竟涅槃。 昨天看《欢乐颂》看到很晚,樊胜美终于暴露出自己的软肋——无底洞一样的家庭,也终于不再是那...
    天舒阅读 4,359评论 2 13

友情链接更多精彩内容