美文网首页
Java初探

Java初探

作者: lookphp | 来源:发表于2023-11-28 17:47 被阅读0次

javac 编译环境

java 运行环境

jdk: java development kit
如果只有Java源码,要编译成Java字节码,就需要JDK,因为JDK除了包含JRE,还提供了编译器、调试器等开发工具

jre: java runtime environment 运行Java字节码的虚拟机

image.png

细心的童鞋还可以在JAVA_HOME的bin目录下找到很多可执行文件:

java:这个可执行程序其实就是JVM,运行Java程序,就是启动JVM,然后让JVM执行指定的编译后的代码;
javac:这是Java的编译器,它用于把Java源码文件(以.java后缀结尾)编译为Java字节码文件(以.class后缀结尾);
jar:用于把一组.class文件打包成一个.jar文件,便于发布;
javadoc:用于从Java源码中自动提取注释并生成文档;
jdb:Java调试器,用于开发阶段的运行调试。

除了Oracle的Java,还有的选么?

有,不仅有,而且非常多。这里我随便列几家(摘自sdk list java):

  • AdoptOpenJDK
  • Amazon
  • Azul Zulu
  • BellSoft
  • SAP
  • TravaOpenJDK

是不是有点意思了?

当然这都源于06年的时候,Sun公司做的一个无比英明的决定,就是搞开源版的Java,后来便有了OpenJDK项目,真是大写的服字。那年笔者刚上大学,不过还没等我大学毕业,Sun公司转眼就被Oracle给收购了,怎不令人唏嘘?

-------------------------------分割线----------------------------------

顺便再提一下这两天刚发生的有意思的事情:Apple公司不是在几天前(2020-11-11)刚刚发布了他们基于ARM架构的新Mac么,而就在前不久,微软站出来说给Java贡献代码,为了实现Java向Apple的新架构的适配。我还在新闻下面看到一个评论,大意是说曾几何时,微软的JVM还是特别厉害的JVM实现呢。

所以,Java虽然名义上是Oracle的,但因其开源的历史渊源,其实很多公司都对它投入了相当大心血,包括很多大佬级别的公司,比如华为公司也是贡献过不少代码的。这些全球顶尖的公司,共同维持着Java世界的秩序。现在Java的迭代速度又坐上火箭了,所以网上那些非要较真引战的伪技术帖,动不动就唱衰Java,我觉得还为时过早。

如果你是名前端程序员,想学学后端,技多不压身想法的话,我觉得后端学什么都挺好;但是如果你是打算吃后端这碗饭,我个人还是首推Java的。

但是Java写起项目来,仪式感真是太强了(贬义),对新人极度不友好。有时候别说是新人了,那种充满了仪式感的样板语言,还有言Java必Spring的无脑式安利,对老人也是一种摧残。

这里我推荐几个框架,让大家从Spring的樊笼中解放出来

  1. SparkJava
  • 上手难度:★☆☆☆☆
  • 学习曲线:★☆☆☆☆
  • 功能强大:★★☆☆☆
  • 场景推荐:入门学习或者个人微型项目使用

2. Micronaut

  • 上手难度:★★☆☆☆
  • 学习曲线:★★★☆☆
  • 功能强大:★★★★☆
  • 场景推荐:有Java Web开发经验的团队使用

3. Vert.x

  • 上手难度:★☆☆☆☆
  • 学习曲线:★★★☆☆
  • 功能强大:★★★★★
  • 场景推荐:有异步编程基础的个人或团队,需要应对高并发项目使用

4. Quarkus

  • 上手难度:★★☆☆☆
  • 学习曲线:★★★★☆
  • 功能强大:★★★★★
  • 场景推荐:离不开Java生态,团队战力强,做云原生项目使用

以上几款框架都是发展态势非常好的框架,笔者多多少少也在项目里用过,所以就根据自己的经验做了推荐。具体还得各位看看文档,自己斟酌食用。

当你打开上面几个框架的官网,应该还会发现另外一个有意思的事情——几乎这些框架都支持多种语言。我个人最喜欢Vert.x,它也是最神勇的一个。来看看它支持的语言吧,下面是其官网的截图:

image.png

醒目的“Polyglot”,相当给力的多语言支持。这又是怎么回事呢?咱们开始下一个议题。

Java不止Java

我们都知道Java程序实际上是靠Java虚拟机,也就是JVM解释执行Java字节码运行的(当然也有例外,这个以后有机会展开说)。所以用什么语言写代码其实反而没那么重要,只要最后经过编译,能搞成字节码在JVM上执行就行了。微软也是这么干的鼻祖,近几年前端JS、TS也得编译编译,最后被浏览器执行,我觉得也都是这么个意思。

那么,在Java生态里,可以编译成字节码被JVM运行的语言有多少呢?我列几个给大家看看:

  • Ruby对应的JRuby
  • Python对应JPython
  • Groovy
  • Scala
  • Clojure
  • Kotlin

上面这几个兄弟,在JVM面前,跟老大哥Java语言基本上也平起平坐了,用起来都算方便的。可以根据自己的经验,比如之前用Ruby、Python什么的可以继续用着;而搞科研的一般Scala用得比较多,不过你要是没听过,基本也就别用了,曲高和寡啊;Kotlin现在如日中天,如果你除了是全栈,也想搞搞全端开发,Kotlin还是很推荐的;我自己呢,Groovy用得比较多,这是一款动静两相宜的语言,用过都说好。

对比一下上一小节的图片,唯独少了JavaScript,这又是怎么回事呢?这个又是个有意思的事了。

附:java学习教程

  1. Java 基础教程(Java Basics)- Codecademy:
    Codecademy 提供了一个互动式的 Java 基础教程,适合新手入门学习。课程通过实际的编码练习和指导,帮助学习者掌握 Java 的核心概念和语法。
    链接:https://www.codecademy.com/learn/learn-java

  2. Java 教程(Java Tutorial for Complete Beginners)- Udemy:
    这门课程由 John Purcell 在 Udemy 上提供,适合完全没有编程经验的新手学习。课程内容简洁明了,并通过实例演示和练习帮助学习者理解 Java 的基础知识和编程技巧。
    链接:https://www.udemy.com/course/java-tutorial/

  3. Java 入门教程(Java for Beginners)- FreeCodeCamp:
    FreeCodeCamp 提供了一个免费的 Java 入门教程,适合初学者入门。该教程以易于理解和亲和力强的方式解释了 Java 的基础概念,并提供了许多实践项目来帮助学习者巩固所学内容。
    链接:https://www.freecodecamp.org/news/java-tutorial-for-beginners/

  4. Java全栈知识体系
    链接:https://pdai.tech/md/spring/springboot/springboot-x-file-upload-download.html

相关文章

  • Lombok初探

    Lombok初探 官网的介绍: Project Lombok is a java library that aut...

  • 初学Java Spring

    最近刚开始接触java spring框架相关知识,将最近整理的学习资料记录下: Java Spring 初探 本部...

  • 面试问题汇总

    2017-3-22 腾讯 1、如何运行时修改Java字节码?参考Java动态编程初探——Javassist 2、如...

  • Java初探

    Java基础

  • Kotlin转Java记录

    昨天写了一篇PermissionsDispatcher初探,文章最后说要用java重写processor模块,今天...

  • 细说JVM(初步理解GC)

    一、GC概述 我们经过细说JVM(Java内存区域划分AND初探对象的创建)的学习,已经知道Java在运行时内存分...

  • HDFS详解二:客户端Java Api

    在《Hadoop三:Hadoop Java API初探(完结)》中已经介绍了为什么需要从winddows的ecli...

  • java注解初探

    我们IDE编程时经常会自动给我们添加Override、Deprecated等以及三方框架注解,这些注解是怎么定义以...

  • Java ArrayList初探

    一、概述 arraylist是以数组实现。节约空间,但是数组容量有限制。超出限制会主动增加50%容量,用Syste...

  • Java IO初探

    Java IO对大多数Java程序员来说是熟悉又陌生,熟悉的是感觉到处都有它的身影,小到简单的读取文件,大到各种服...

网友评论

      本文标题:Java初探

      本文链接:https://www.haomeiwen.com/subject/rywibxtx.html