当前位置: 首页 > 后端技术 > Java

Java特性

时间:2023-04-01 20:02:46 Java

谈到Java,你会想到什么?是蓝红相间的咖啡图标,还是“一次编写,随处运行”的口号。这次我们就来说说Java的两个核心特性:跨平台能力和垃圾回收能力。1.一次编写,处处运行一次编写,处处运行,解决跨平台问题。不同的操作系统提供不同的能力,相同功能的程序在不同的操作系统下需要编写不同的代码。比如某个功能是用C语言实现的,使用了macOS提供的系统能力,那么这个程序就不能在Windows下编译运行,需要改成Windows操作系统提供的能力。Java通过提供程序运行环境屏蔽了这一层差异。Java程序运行在这个环境中,环境适应底层操作系统的不同接口,使得编写程序的人不需要关心操作系统的差异。一次编写效果,到处运行。这个程序运行的环境其实就是jdk,所以写Java代码的第一步就是“安装环境”。2.解释与编译编译是将源代码转换为机器代码的过程。负责这个过程的程序称为编译器。编译后会生成机器码文件;解释器是在运行时将源代码逐行转换为机器码并运行的过程,不生成机器码文件。比如你明天要用英文演讲,但是稿子是中文的,你一般是怎么做的?有两个选择,要么提前把中文稿子翻译成英文,明天直接按照英文稿子做演讲。假设后天有演讲,可以重用这份稿件,不用重新翻译。把中文翻译成英文的过程叫做编译,你相当于编译器的角色。另一种选择是不提前翻译稿件,而是在演讲过程中将英文稿件实时翻译成中文。这个过程变成了解释。你相当于一个口译员的角色。如果后天有发言,需要再实时翻译一遍。有些人用烹饪来比喻。编译运行就好比准备一桌菜,然后开吃。他们解释说,跑步就是吃火锅,边吃饭边漱口。可以看出,编译运行的执行效率会更高,吃火锅的速度会更慢。那么Java是一种什么类型的语言呢?当一种语言被称为编译语言时,它到底是什么意思?我们开发完成后,编译代码。这时,编译器会将Java源代码编译成字节码(.class文件)。运行时,JVM会加载字节码,并将字节码转换为机器码。Java似乎是一种解释型语言。但实际上,大多数常用的JVM都提供了JIT(Just-In-Time)技术,即动态编译。JIT可以直接将热点代码编译成机器码,提高热点代码的执行速度。并且,在Java9中,还提供了AOT编译器,支持将所有代码直接编译成机器码。从这个角度来看,在某些场景下,Java是一种编译型语言。所以,总的来说,Java的基础是解释型的,但是由于解释型效率低下,引入了JIT技术和AOT技术来提高运行效率,所以Java也有编译的基因。所以看来这个分类也不是非此即彼,需要根据具体情况具体分析。3、JRE和JDK我们经常看到的JRE和JDK是什么关系?简单的说,JDK包含了JRE,JRE是JDK的子集,JDK是JRE的超集。JRE:JavaRuntimeEnvironment,Java运行环境,包括JVM、类库等。JDK:JavaDevelopmentKit,Java开发工具包,包括JRE、编译器、诊断工具等。第四,垃圾回收除了跨平台能力,垃圾回收能力也是Java强大的特性之一,垃圾回收解决什么问题呢?刚开始学习C语言的时候,我大概率会面临被指针支配的恐惧。C语言需要自己申请内存,通过指针操作内存,自己释放内存。内存管理不当会导致内存泄漏等问题。这样的设计无形中抓住了程序员的注意力,无法专注于完成功能,需要额外的精力去考虑内存的使用。一般来说,它会降低生产率。垃圾回收技术就是屏蔽内存管理的细节,降低内存泄露的概率,就像一个专业的内存管家,分担程序员的精力,让更多的心思花在功能的实现上,但是相应的,内存的使用也失去了一些灵活性。五、总结总的来说,从机器码到汇编语言,再到今天的高级语言,使用起来越来越方便,编写和交流也越来越容易。今天习以为常的功能只有在当时需要解决的痛点背景下才能看到,才能感受到语言的伟大。减少编程时需要注意的细节,释放能量,专注于功能的实现,才是永恒的进化之路。未来还会有哪些精彩的故事呢?