Java 从死到生的修炼 (第一章:生命的起源之接触.)

所有的程序语言的第一句总是“Hello World”,当然我们跨平台的Java当然也不例外,这句话已经成为菜鸟必须要跨过的门槛

一、为什么要学习Java?

    1.简单易学

    2.跨平台

    3.类库丰富

    4.使用广泛

    5.薪资可观

二、Java的起源

Java的前世今生

不知道有没有小伙伴和笔者一样,虽然早已学过Java这门编程语言,但是对他的历史以及版本更替情况却毫无了解。遂笔者在这里记录一下Java的诞生及发展。

起源:

  1. 20世纪90年代,单片式计算机系统诞生,单片式计算机系统不仅价格低廉,而且功能强大,使用它可以大幅度提升消费类电子产品(电视机顶盒,面包烤箱,收音机,移动电话等)的智能化程度。
  2. SUN公司为了抢占市场先机,在1991年4月,成立了一个由詹姆斯·高斯林(James Gosling)领导,名为Green(绿色计划)的项目小组,目的是开发一种能够在各种消费性电子产品上运行的程序架构。
  3. 由于当时C++所具有的优势,该项目组的研发人员首先考虑采用C++来编写程序,但对于硬件资源极其匮乏的单片式系统来说,C++过于复杂和庞大,再加上由于消费电子产品所采用的嵌入式处理器芯片的种类繁杂,需要让编写的程序跨平台运行也成为一个难题。
  4. 为了解决困难,最后项目小组决定:既不用C++编写,也不用开发全新的编程语言,而是根据嵌入式软件的要求,对C++进行了改造,去除了 C++复杂的指针和内存管理,最终在1992年,开发了一种称为Oak的面向对象语言。
  5. 当他们向硬件生产商进行演示了Green操作系统,Oak的程序设计语言,类库及其硬件,以说服他们使用Oak语言生产硬件芯片时,硬件生产厂商对此并不感冒,原因是贸然生产风险太大,所以Oak语言因缺乏硬件支持而无法进入市场,从而被搁置一旁。
  6. 1994年6,7月间,在经历了一场历时三天的讨论,决定将该技术应用于万维网。1995年,他们用Oak语言研发了一种将小程序嵌入到网页中执行的技术——Applet,由于Applet不仅能嵌入网页,还可随同网页在网络上进行传输,这让无数的程序员看到了Oak这门语言,与此同时,Oak正式更名为Java。从此,Java在互联网的推动下就火了。

发展:

  1. 1996年1月,SUN公司推出了JDK1.0。在JDK1.0发布后,有很多程序员学习并运用Java来制作网页,JDK包括两大部分:开发工具和运行环境。
  2. 运行环境包括核心API,集成API,用户界面API,发布技术,Java虚拟机(JVM)。JDK1.0的发布,标志着Java成为一种独立的开发工具。在同年9月,约有8.3万个网页应用了Java技术来制作。JDK1.0的代表技术有:Java虚拟机,Applet,AWT等。
  3. 1997年2月,SUN 公司紧接着推出了JDK1.1,在推出后的3周时间里,达到了近22万次的下载量。4月2日,首届Java One大会在美国旧金山召开,参加会议的人超过一万人,创造了当时全球同类会议规模最高的记录。JDK1.1的代表技术有:JDBC,JavaBean,RML,JAR文件格式,Java 语法中的内部类和反射。
  4. 1998年12月8日,JDK1.2——第二代Java平台的企业版J2EE发布。
  5. 1999年6月,SUN公司把Java体系分为三个方向: J2ME (Java2 Micro Edition,Java2 平台的微型版),应用于移动,无线及有限资源的环境; J2SE (Java2 Standard Edition,Java2 平台的标准版),应用于桌面环境; J2EE (Java2 Enterprise Edition,Java2 平台的企业版),应用于基于Java的服务器开发。
  6. 随着供应商的不同,Java 的 API 也分为三大类: Java Core API:Java 核心类库; Java Optional API:对之前 API 的扩充 特殊 API:由特殊厂商或组织提供的 API。
  7. Java 2 平台的发布,是 Java 发展过程中最重要的一个里程碑,标志着 Java 的应用开始普及。JDK1.2 的代表性技术有:Swing、JavaIDL、EJB、JavaPlug-in 等,在 API 文档中,添加了 strictfp 关键字和 Collections 集合类。
  8. 1999 年 4 月 27 日,HotSpot 虚拟机发布。HotSpot 是由一家叫“LongviewTechnologies”的小公司开发的,后来被 SUN 公司收购。HotSpot 虚拟机发布时是作为 JDK 1.2 的附加程序提供的,后来它成 为了 JDK 1.3 及之后所有版本的 Sun JDK 的默认虚拟机 。
  9. 2000 年 5 月,JDK1.3、JDK1.4 和 J2SE1.3 相继发布,J2SE1.3 是对 J2SE1.2 的补充和扩展,从应 用领域的角度分析,JavaSE1.3 已经涵盖了数据库、WEB、网络、图形、多媒体、电话、影像等大 部分的信息技术领域。
  10. 2002 年 2 月 26 日,J2SE1.4 发布。与 J2SE1.3 相比,多了近 62%的类和接口。在这些新特性当中, 还提供了广泛的 XML 支持、安全套接字(Socket)支持(通过 SSL 与 TLS 协议)、全新的 I/O API、 正则表达式、日志与断言。
  11. 2004 年 9 月 30 日,J2SE1.5 发布,成为 Java 语言发展史上的又一里程碑。为了表示该版本的重要 性,J2SE1.5 更名为 Java SE5.0(内部版本号 1.5.0)。Java SE5.0 包含了从 1996 年发布 1.0 版 本以来的最重大的更新,其中包括泛型支持、基本类型的自动装箱、改进的循环、枚举类型、格式化 I/O 及可变参数。
  12. 2005 年 6 月,在 JavaOne 大会上,Sun 公司发布了 JavaSE6。此时,Java 的各种版本已经更名, 已取消其中的数字 2,如 J2EE 更名为 JavaEE,J2SE 更名为 JavaSE,J2ME 更名为 JavaME。
  13. 2011 年 7 月 28 日,收购 Sun 公司的 Oracle 发布了 JavaSE7,引入了二进制整数、支持字符串的 switch 语句、棱形语法、多异常捕抓、自动关闭资源的 try 语言等新特性。
  14. 2014 年 3 月 18 日,Oracle 公司发布 Java SE8,这次版本升级为 Java 带来了全新的 Lambda 表达 式、流式编程等大量新特性,这些新特性使得 Java 变得更加强大。
  15. 2017 年 9 月 22 日,Oracle 公司发布 JavaSE9,这次版本升级强化了 Java 的模块化系统,让 Java 语言更轻量化,且采用了更高效、更智能的 GI 垃圾回收器,并在核心类库上进行大量更新,可进一 步简化编程。
  16. 2018 年 3 月 21 日,JavaSE10 发布,Java10 版本带来了很多新特性,其中最备受广大开发者 关注的莫过于局部变量类型推断。此外,还包垃圾收集器改善、GC 改进、性能提升、线程管控等新 特性。
  17. 2018 年 9 月 26 日,JavaSE11 发布。这是 Java 大版本周期变化后的第一个长期支持版本(LTS 版本持续支持到2026 年9月)。 Java11 带来了 ZGC、 HttpClient 等重要特性,一共包含 17 个 JEP (JDK Enhancement Proposals,JDK 增强提案)。
    ————————————————
    版权声明:本文为CSDN博主「shiny_co」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_43721011/article/details/108362468

三、Java的特点

    1.跨平台

    2.面向对象

    3.安全性

    4.多线程

    5.简单易用

四、Java的三个版本

  1.Java SE

( Java Platform Standard Edition)标准版,是为开发普通桌面和商务应用程序提供的解决方案。

  Java SE是三个平台中最核心的部分, JavaEE和 JavaME都是从 JavaSE的基础上发展而来的, JavaSE平台中包括了Java最核心的类库,如集合、IO、数据库连接以及网络编程等。

  2.Java EE

( Java Platform Enterprise Edition)企业版,是为开发企业级应用程序提供的解决方案。

  Java EE可以被看作一个技术平台,该平台用于开发、装配以及部署企业级应用程序,其中主要包括 Servlet、JSP、 Javabean、JDBC、EJB、Web等技术。

  3.Java ME

( Java Platform Micro Edition)小型版,是为开发电子消费产品和嵌入式设备提供的解决方案。

  Java ME主要用于小型数字电子设备上软件程序的开发。例如,为家用电器增加智能化控制和联网功能,为手机增加新的游戏和通讯录管理功能。此外,JavaME提供了HTTP等高级Internet协议,使移动电话能以Client/ Server方式直接访问 Internet的全部信息,提供最高效率的无线交流。

五、JVM生态调查报告

  知名安全机构Snyk和知名JDK供应商Azul联合推出了2021年度的JVM生态报告。该报告历经六周,相关调研收集了全球2000多名Java开发者的问卷回复。经过调研,对当前的JVM生态有了更好更全面的看法。能够为Java的开发者和技术决策者提供一个客观的参考依据。接下来就让胖哥来带大家解读一下相关的报告吧。

整体趋势

在这里插入图片描述
这里我们可以看到:

  • 生产中使用OpenJDK的已经占到了44%
  • 生产中使用JDK 11的占到了60%之多,如果带上了中国应该不会有这么高。
  • 最近版本的JDK(调查时为JDK 15)在开发的使用率已经达到了25%。
  • Kotlin已经成为除Java之外第二流行的JVM语言。
  • 90%的开发者使用Java来应用。
  • 半数的开发者使用Spring Boot作为开发框架。
  • Maven依然是构建工具的霸主,75%!
  • 70%的开发者使用IntelliJ IDEA作为IDE工具。

这里的占比应该指的是受调查开发者的比例。
在这里插入图片描述生产中JDK占比

Open JDK的供应商越来越多了,现在就连微软也开源了他们的JDK。在去年的报告中Oracle JDK占据了34%,但是在今年Open JDK成为了主流。超过37%的受访者表示他们同时使用至少有两种不同的JDK,甚至有12.5%的人使用三个或更多。**Open JDK占据了77%的份额成为绝对意义上的主流首选。**不过值得注意的是Oracle依然掌控着JDK,它两种JDK依然有超过50%的份额。

生产环境中Java 11 超过Java 8

在这里插入图片描述
生产中的JDK版本

在版本选择上,Java 8已经连续三年下跌了,你发任你发,我用Java 8 ? 今年Java 11以微弱的优势第一次超过Java 8。说实话胖哥现在也没有在生产中使用Java 11,对即将GA的Java 17带来的风向变化我是有浓厚的兴趣的。

在开发中Java程序员会更加奔放一些,高版本的JDK会尝试的更加多一些,不过趋势和上面差不多。

Java 依然是主要的JVM语言

在这里插入图片描述
91%的受访者有意愿使用Java作为JVM语言的首选,但是又有17.7的开发中选择了Kotlin。这是怎么回事?因为他们经常将Kotlin与Java结合使用,这基于他们之间有很好的互操作性。此外Groovy和Scala的表现也不俗,在各自擅长的领域有出色的发挥。

不过在生态建设上Kotlin却没有Groovy和Scala亮眼,起码其他两家有明星级的产品Gradle和Kafka。

谁是第一IDE?

在这里插入图片描述
受访者IDE的使用比例

51.3%的人使用IntelliJIDEA旗舰版(付费版)和27.3%是IntelliJ IDEA社区(免费)版本。不过在受访的用户中大多数人会使用多个IDE工具,这也是你看到这些数据并不是100%的原因。另外值得注意的是Visual Studio Code的增长势头非常猛,Eclipse要小心喽!

构建工具领域没什么变动

在这里插入图片描述
构建工具的使用分布

和去年差不多,Maven依然是老大,Gradle得加把劲啊!

Spring YYDS!!!

在这里插入图片描述
应用框架使用比例

Spring 永远滴神!牢牢保持着领先地位。不过值得注意的是Structs已经跌出了榜单前10。后期之秀Micronaut、MicroProfile、Quarkus发展得不错,看来云原生在JVM领域也火起来了。

最后

如果小张有什么收集的不够完整的地方请各位网友多多体谅啊哈哈哈哈
在这里插入图片描述

六、编写Java程序

  1.编写源程序 HelloWorld.java.

将程序文件HelloWorld.java保存到D:\java_work目录里:
在这里插入图片描述

  • 关键字public、class、static、void必须小写
  • 对于公共类(有public修饰的类),类名必须与文件名保持一致
  • String[] args:命令行参数是名为args的字符串数组
  • System.out.println():System类的out成员的println()方法
  • 每条语句最后必须加一个分号;作为结束符

  2.编译成字节码文件HelloWorld.class

启动CMD窗口,切换到D:\java_work目录,执行命令:javac HelloWorld.java
在这里插入图片描述
屏幕上没有任何提示信息,就表明编译成功了。(下一步本该是没有信息的,但是我已经做了下一步了。)

  3.解释执行类HelloWorld

执行命令:java HelloWorld
在这里插入图片描述
下面就是解释成功后的代码内容啦
I am coming study java!

小张同学英语比较差,犯错在所难免哈哈哈

七、课后练习

1.输出个人信息
public class Personalinformational {
    public static void main(String[] args) {
        System.out.println("学号:21262001");
        System.out.println("姓名:李钟意");
        System.out.println("习惯:喜欢一个人独处");
        System.out.println("目标:努力各科班上第一");
        System.out.println("鼓励词:不抛弃,不放弃,加油加油加油");
        System.out.println("座右铭:效率与质量共存!!!");
    }
}

步骤和上面的HelloWorld语句操作几乎一模一样。
在这里插入图片描述

先编译
后解释

2.打印直角三角形

这个三角形的话小编上一个语言python还没学透,麻麻的很,就用的很笨的方法做的?
在这里插入图片描述
也是先编译后解释
在这里插入图片描述
最后我相信小伙伴肯定会比我这么笨的人有更好的方法吧!!!

3. 打印一颗爱心

这个爱心的话有一个通用公式:
在这里插入图片描述
  小李这里也是看了很久的教学视频才做出来的,毕竟小编脑子比较笨

代码如下:在这里插入图片描述
效果图:
在这里插入图片描述

4.打印史努比小狗

史努比小狗的话,小编在IJ上面直接编写的话就没有问题,但是在Notepad++通过最开初的方法编写时就有很多错误,几乎全错代码。

IJ效果:
在这里插入图片描述
CMD命令提示符窗口:
在这里插入图片描述

总结:

小编也不知道是怎么回事了,因为才接触,还对Java的字符规则不太熟,导致出大问题,下来需要好好的补基础。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值