很多同学在找工作时都会受到公司HR的灵魂拷问——“你为什么要学Java?”。纵使我们已经深入浅出的掌握了各项相关技能,却仍然会被这个问题所困惑。        

        那么,我们为什么要学习java?

        现如今Java是是全球排名第一的编程语言,社会对于Java工程师的岗位也有极大的需求量。所以说在很多人看来,选择Java就相当于选择了好的就业机会和丰厚的薪水。

        Java语言相较于其他语言,有着自己独特的优势,首先就是它的跨平台特性。该语言是基于JVM(Java虚拟机)架构所设计,简单来说,就是在不同的操作系统(如Windows、Linux、macOS)中搭建一个中间解释层(JVM),Java编译器将我们编写的源代码(.java文件)编译为字节码(.class文件),该字节码并不是与特定操作系统或是硬件平台相关的代码,而是一种中间代码,在我们获取到这些字节码之后,可以通过在不同平台上搭建相应的JVM来运行,从而实现“一次编写,到处运行”(Write Once, Run Anywhere,简称WORA)。同时,JVM还会使用即时编译(JIT,Just-In-Time Compilation)技术。在执行Java字节码时,JVM会根据运行时的情况将频繁使用的字节码编译成本地机器码,从而提高程序的执行效率。除了JVM提供的跨平台支持,Java的标准库(Java Standard Library)也为开发者屏蔽了大多数与操作系统相关的细节。例如,文件系统操作、网络通信等功能,Java提供了统一的API,不论在什么平台上运行,API的使用方式都是相同的,进一步简化了跨平台开发的复杂性。

        其次Java程序易于编写,而且有内置垃圾收集,不必考虑内存管理。在C/C++等语言中,开发者需要手动管理内存,创建对象时需要手动分配内存,并在使用完后释放它们。如果忘记释放内存,可能导致内存泄漏,程序占用的内存越来越多,甚至会导致程序崩溃。Java通过垃圾收集器来管理内存。当某些对象不再被引用时,垃圾收集器会自动释放这些对象占用的内存。这样,开发者不必担心何时应该手动释放对象内存,减少了程序员因内存管理失误而引发的错误。这种机制不仅简化了开发工作,还提高了程序的健壮性和稳定性。

        最后Java虚拟机拥有工业级的稳定性和高度优化的性能,且经过了长时期的考验。同时Java拥有庞大的开源社区,提供了各种高质量的开源工具和框架,开发者可以轻松集成并利用这些资源,从而加快开发速度并确保代码质量。这些因素共同促成了Java的广泛应用,特别是在企业级和互联网应用中,Java几乎成为了行业标准。

        介绍完Java的优势,再来谈谈Java的历史。

        Java最早是由SUN公司(已被Oracle收购)的詹姆斯 高斯林(高司令,人称Java之父)在上个世纪90年代初开发的一种编程语言,最初被命名为Oak,后由于Oak已被人注册转而注册Java。编译型语言(如C/C++)将源代码编译为特定平台的机器码,执行速度快,但需要为每个平台重新编译;解释型语言(如Python、Ruby)通过解释器逐行执行代码,虽然跨平台但性能较低。Java结合了两者的优点,首先将代码编译为与平台无关的字节码,再通过不同平台的JVM(Java虚拟机)解释或即时编译(JIT,将热点代码转译为机器码)为机器码执行,实现了“编译一次,运行在任意平台”的效果。

        Java 发展过程中,SUN 公司将其划分为三个不同版本,分别满足不同的应用场景需求:

        1. Java SE(Standard Edition):标准版,主要用于桌面应用和基础的服务端开发。它提供了核心的 Java API,包括面向对象编程、集合框架、输入输出、线程等基础功能。Java SE 是所有 Java 版本的基础。

        2. Java EE(Enterprise Edition):企业版,基于 Java SE 之上,扩展了适用于大型企业级应用的 API 和工具,专注于开发分布式、多层次的企业应用。Java EE 提供了对数据库访问、Web 服务、安全、事务处理等支持,广泛应用于服务器端的开发,如 Web 应用、企业级系统。

        3. Java ME(Micro Edition):微型版,专门为资源受限的设备设计,如嵌入式设备、手机、物联网设备等。Java ME 针对这些设备提供了精简的 API,适合运行在有限的硬件资源上,适应了移动设备和嵌入式系统的需求。

        每个版本的 Java 都针对特定的开发需求和平台,确保了 Java 的灵活性和广泛应用。毫无疑问,Java SE是整个Java平台的核心,为开发者提供了基础的编程功能,而Java EE则扩展了这些功能,专注于企业级和Web应用开发,许多流行框架如Spring都是基于Java EE的生态系统。尽管Java ME旨在服务于移动和嵌入式设备,但其并未真正流行,随着Android成为移动开发的标准,因此在没有特殊需求的情况下,不建议学习Java ME。

        对于Java开发者,推荐的Java学习路线图如下:

  1. 首先要学习Java SE,掌握Java语言本身、Java核心开发技术以及Java标准库的使用;
  2. 如果继续学习Java EE,那么Spring框架、数据库开发、分布式架构就是需要学习的;
  3. 如果要学习大数据开发,那么Hadoop、Spark、Flink这些大数据平台就是需要学习的,他们都基于Java或Scala开发;
  4. 如果想要学习移动开发,那么就深入Android平台,掌握Android App开发。

        最后需要说明两点,一是任何语言只是我们实现想法的工具,不要一味的纠结语言本身,开发者是去使用语言而不是设计语言。二是现在很多人说Java环境不好,现在入行如同四九年入国军,三百六十行,行行出状元,打铁还需自身硬,当下包括未来一段时间对于优秀的Java架构师还是有着很高的接受度,如果是半吊子水平那是难免会被优化,所以终身学习也是程序员的必修课。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐