美文网首页
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

    相关文章

      网友评论

          本文标题:Java初探

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