Java从入门到实战总结-1.1、Java基础之环境搭建和eclipse安装


文章目录

  • Java从入门到实战总结-1.1、Java基础之环境搭建和eclipse安装
    • 1、Hello Java
      • 1.1、Java起源
      • 1.2、Java演变
    • 2、Java体系与特点
    • 3、Java特性
    • 4、Java跨平台的原理
      • 4.1、Java技术的两种核心机制
      • 4.2、Java虚拟机(JVM)
      • 4.3、垃圾回收器(GC)
      • 4.4、Java SE的组成概念图
    • 5、JDK与JRE
    • 6、JDK11安装
    • 7、环境变量详述
    • 8、JAVA_HOME环境变量
    • 9、第一个Java程序
    • 10、安装eclipse
    • 11、eclipse中创建Java工程
    • 12、编写自动关机程序
    • 13、代码语句分类

1、Hello Java

1.1、Java起源

20 世纪 90 年代,单片式计算机系统诞生,单片式计算机系统不仅廉价,而且功能强大,使用它可以大幅度提升消费性电子产品的智能化程度。SUN 公司为了抢占市场先机,在 1991 年成立了一个由詹姆斯·高斯林(James Gosling)领导, 名为“Green”项目小组,目的是开发一种能够在各种消费性电子产品上运行的程序架构。

那么使用何种编程语言来设计,是项目小组头疼的事。当时 C++较为有优势的,项目小组首先考虑的是采用它来编写程序,但 C++过于复杂和庞大,再加上由于消费电子产品所采用的嵌入式处理器芯片的种类繁杂,需要让编写的程序跨平台运行,假如用 C++编写的话对程序的跨平台运行不友好。

最后项目小组决定:既不用 C++编写,也不开发全新的编程语言,而是对 C++进行改造:去除了C++复杂的指针和内存管理,并结合嵌入式系统的实时性要求,最终在 1992 年,他们开发了一种名为“Oak”的面向对象语言。

可当他们在向硬件生产商进行演示的时候,硬件生产商对此并不感冒,OaK 语言因为缺乏硬件的支持而无法进入市场,从而被搁置一旁。

1994 年,项目小组看到了浏览器在未来的发展前景,于是决定将 OaK 应用于万维网。1995 年,他们用 OaK 语言研发了一种能将小程序嵌入到网页中执行的技术——Applet,由于 Applet 不仅能嵌入网页,还可随同网页在网络上进行传输,这让无数的程序员看到了 OaK 这门语言,与此同时,OaK正式更名为 Java。从此,Java 在互联网的推动下火了。

1.2、Java演变

1996 年 1 月,SUN 公司推出了 JDK1.0。在 JDK1.0 发布后,有很多程序员学习并运用 Java 来制作网页,JDK 包括两大部分:开发工具和运行环境。

运行环境包括核心 API、集成 API、用户界面 API、发布技术、Java 虚拟机(JVM)。JDK1.0 的发布,标志着 Java 成为一种独立的开发工具。在同年 9 月,约有 8.3 万个网页应用了 Java 技术来制作。

JDK1.0 的代表性技术有:Java 虚拟机、Applet、AWT 等。

1997 年 2 月,SUN 公司紧接着推出了 JDK 1.1,在推出后 3 周时间里,达到了近 22 万次的下载量。

4 月 2 日,首届 Java One 大会在美国旧金山召开,参加会议的人超过一万人,创造了当时全球同类会议规模最高的纪录。9 月,Java Developer Connection 社区成员超过 10 万,同年还有 10 个最主要的操作系统供应商正式声明将在他们的产品中使用 Java。

JDK1.1 的代表性技术有:JDBC、JavaBeans、RMI、JAR 文件格式、Java 语法中的内部类和反射。

1998 年 12 月 8 日,JDK1.2——第二代 Java 平台的企业版 J2EE 发布。

1999 年 6 月,Sun 公司把 Java 体系分为三个方向:

​ J2ME(Java2 Micro Edition,Java2 平台的微型版),应用于移动、无线及有限资源的环境;

​ J2SE(Java 2 Standard Edition,Java 2 平台的标准版),应用于桌面环境;

​ J2EE(Java 2Enterprise Edition,Java 2 平台的企业版),应用于基于 Java 的应用服务器。

随着供应商的不同,Java 的 API 也分为三大类:

​ Java Core API:Java 核心类库;

​ Java Optional API:对之前 API 的扩充;

​ 特殊 API:由特殊厂商或组织提供的 API。

Java 2 平台的发布,是 Java 发展过程中最重要的一个里程碑,标志着 Java 的应用开始普及。

JKD1.2 的代表性技术有:Swing、Java IDL、EJB、Java Plug-in 等,在 API 文档中,添加了 strictfp关键字和 Collections 集合类。

1999 年 4 月 27 日,HotSpot 虚拟机发布。HotSpot 是由一家叫“Longview Technologies”的小公司开发的,后来被 SUN 公司收购。HotSpot 虚拟机发布时是作为 JDK 1.2 的附加程序提供的,后来它成为了 JDK 1.3 及之后所有版本的 Sun JDK 的默认虚拟机 。

2000 年 5 月,JDK1.3、JDK1.4 和 J2SE1.3 相继发布,J2SE1.3 是对 J2SE1.2 的补充和扩展,从应用领域的角度分析,JavaSE1.3 已经涵盖了数据库、WEB、网络、图形、多媒体、电话、影像等大部分的信息技术领域。

2002 年 2 月 26 日,J2SE1.4 发布。与 J2SE1.3 相比,多了近 62%的类和接口。在这些新特性当中,还提供了广泛的 XML 支持、安全套接字(Socket)支持(通过 SSL 与 TLS 协议)、全新的 I/OAPI、正则表达式、日志与断言。

2004 年 9 月 30 日,J2SE1.5 发布,成为 Java 语言发展史上的又一里程碑。为了表示该版本的重要性,J2SE 1.5 更名为 Java SE 5.0(内部版本号 1.5.0)。Java SE 5.0 包含了从 1996 年发布 1.0 版本以来的最重大的更新,其中包括泛型支持、基本类型的自动装箱、改进的循环、枚举类型、格式化I/O 及可变参数。

2005 年 6 月,在 Java One 大会上,Sun 公司发布了 Java SE 6。此时,Java 的各种版本已经更名,已取消其中的数字 2,如 J2EE 更名为 JavaEE,J2SE 更名为 JavaSE,J2ME 更名为 JavaME。

2011 年 7 月 28 日,收购 Sun 公司的 Oracle 发布了 Java SE 7,引入了二进制整数、支持字符串的switch 语句、棱形语法、多异常捕抓、自动关闭资源的 try 语言等新特性。

2014 年 3 月 18 日,Oracle 公司发布 Java SE8,这次版本升级为 Java 带来了全新的 Lambda 表达式、流式编程等大量新特性,这些新特性使得 Java 变得更加强大。

2017 年 9 月 22 日,Oracle 公司发布 Java SE 9,这次版本升级强化了 Java 的模块化系统,让 Java语言更轻量化,且采用了更高效、更智能的 GI 垃圾回收器,并在核心类库上进行大量更新,可进一步简化编程。

2018 年 3 月 21 日,Java SE 10 发布,Java 10 版本带来了很多新特性,其中最备受广大开发者关注的莫过于局部变量类型推断。此外,还包垃圾收集器改善、GC 改进、性能提升、线程管控等新特性。

2018 年 9 月 26 日,Java SE 11 发布。这是 Java 大版本周期变化后的第一个长期支持版本(LTS版本持续支持到 2026 年 9 月)。Java11 带来了 ZGC、Http Client 等重要特性,一共包含 17 个 JEP(JDK Enhancement Proposals,JDK 增强提案)。

2019 年 3 月 20 日,Java SE 12 发布。Java 12 是短期支持版本,可在下一个版本发布之前获得 Oracle的商业支持。

2019 年 9 月 23 日,Java SE 13 发布,此版本中添加了“文本块”,文本块是一个多行字符串文字,避免对大多数转义序列的需要,以可预测的方式自动格式化字符串,并在需要时让开发人员控制格式。

2、Java体系与特点

Java SE:Java Platform,Standard Edition

标准版:各应用平台的基础,桌面开发和低端商务应用的解决方案。

Java EE:Java Platform,Enterprise Edition

企业版:以企业为环境而开发应用程序的解决方案

Java ME :Java Platform, Micro Edition

微型版:致力于消费产品 和嵌入式设备的最佳解决方案

Java 可以做什么?

开发桌面应用程序

银行软件、商场结算软件

开发面向 Internet 的 web 应用程序

门户网站(工商银行)、网上商城、阿里巴巴、电子商务网站

提供各行业的解决方案

金融、电信、电力…

嵌入式开发

移动电话、可视电话、数字机顶盒和汽车导航系统

3、Java特性

一种纯面向对象的编程语言。

一种与平台无关(跨平台)的语言。(它提供了在不同平台下运行的解释环境)

一种健壮的语言,吸收了 C/C++语言的优点。

有较高的安全性。(自动回收垃圾,强制类型检查,取消指针)

4、Java跨平台的原理

4.1、Java技术的两种核心机制

Java 虚拟机(Java Virtual Machine) JVM

垃圾回收器(Garbage Collection) GC

4.2、Java虚拟机(JVM)

JVM 可以理解成一个可运行 Java 字节码的虚拟计算机系统

  • 它有一个解释器组件,可以实现 Java 字节码和计算机操作系统之间的通信

  • 对于不同的运行平台,有不同 的 JVM

JVM 屏蔽了底层运行平台的差别,实现了“一次编译,随处运行”。

4.3、垃圾回收器(GC)

不再使用的内存空间应当进行回收-垃圾回收。

在 C/C++等语言中,由程序员负责回收无用内存。

Java 语言消除了程序员回收无用内存空间的责任:

JVM 提供了一种系统线程跟踪存储空间的分配情况。并在 JVM 的空闲时,检查并释放那些可以被释放的存储空间。

垃圾回收器在 Java 程序运行过程中自动启用,程序员无法精确控制和干预。

4.4、Java SE的组成概念图

5、JDK与JRE

JDK(Java Development Kits)-- Java 开发工具集:

  • JRE(Java Runtime Environment)Java 运行时环境

  • JVM

  • Java API (应用程序编程接口)

  • Java 编译器(javac.exe)、Java 运行时解释器(java.exe)、Java 文档化工具(javadoc.exe)及其它工具及资源

JRE 的三项主要功能:

  • 加载代码:由类加载器(class loader)完成;

  • 校验代码:由字节码校验器(byte code verifier)完成;

  • 执行代码:由运行时解释器(runtime interpreter)完成。

6、JDK11安装

可以参考我之前总结的安装过程:https://blog.csdn.net/weixin_39510813/article/details/79834553

目前JDK的下载需要翻墙注册登陆,可以考虑在一些国内网站下载,如果能翻墙的话可以注册登陆官网进行登陆下载

7、环境变量详述

环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。例如Windows和DOS操作系统中的path环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。用户通过设置环境变量,来更好的运行进程。

在Linux中也可以设置环境变量,设置后系统会尝试在系统默认的命令路径以及我们设置的环境变量的位置搜索输入到命令行的命令并执行。

8、JAVA_HOME环境变量

这里我们将可能变化的量即变量定义一个变量,方便统一管理经常变得量,因为我们的JDK的安装位置可能会更改,所以我们将JDK的安装位置更改为该变量。无论JDK或者JRE的安装位置如何变,对应其下面的bin目录是不变的,这样如果我们下次更换JDK版本重新安装后只需要更改JAVA_HOME变量的值就可以了。

9、第一个Java程序

class HelloWorld {public static void main(String[] args) {System.out.println("Hello World!");}
}

mac下和Windows下dos的编译运行类似,如下(编辑后缀为java的文件->javac进行编译成字节码->运行):

10、安装eclipse

可以参考我之前总结的:https://blog.csdn.net/weixin_39510813/article/details/108246598

下载安装好JDK后其实下载安装eclipse和安装其它软件是类似的,没有什么特殊的地方,可能需要设置JDK的安装位置,选择你安装JDK的位置即可。

11、eclipse中创建Java工程

关掉welcome:

new->project:

Java Project:

输入项目名称:

不创建module:

这样项目就创建成功了:

12、编写自动关机程序

在上面的项目中src文件夹右键->new->class后:

package day01_test;import java.io.IOException;public class Demo1 {/*** 这是程序的入口 * @throws IOException */public static void main(String[] args) throws IOException {//单行注释/*多行注释*/System.out.println("这是一个定时关机程序");//执行Runtime.getRuntime().exec("shutdown -s -t 60");}}

文件中右键进行运行:

package day01_test;import java.io.IOException;public class Demo2 {public static void main(String[] args) throws IOException {// TODO Auto-generated method stubRuntime.getRuntime().exec("shutdown -a");}
}

当然上面的代码是针对Windows的,不同的系统的命令是有差异的,mac下的sudo shutdown -h +分钟的命令无法在exec中执行,而且没有shutdown -a取消关机的指令,如果有知道mac下如何使用Java进行关机和取消关机的欢迎交流。

13、代码语句分类

  • 结构定义语句
  • 功能执行语句

Java从入门到实战总结-1.1、Java基础之环境搭建和eclipse安装相关推荐

  1. Pytorch深度学习实战教程:语义分割基础与环境搭建

    一.前言 许久没有更新技术博文了,给自己挖一个新坑:语义分割系列文章. 该系列文章的内容有: Pytorch的基本使用 语义分割算法讲解 先从最简单的语义分割基础与开发环境搭建开始讲解. 二.语义分割 ...

  2. 1,windows java环境搭建,eclipse安装、tomcat配置,快速创建jsp页面

    1 环境搭建: jdk配置+eclipse下载 请参考:https://www.cnblogs.com/ForestDeer/p/6647402.html tocat下载地址:http://mirro ...

  3. Java开发环境搭建:eclipse安装和工程创建

    一.如果没有IDE会怎么样? 什么是IDE? 集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器.编译器 ...

  4. Java从入门到实战总结-4.2、数据库高级

    Java从入门到实战总结-4.2.数据库高级 文章目录 Java从入门到实战总结-4.2.数据库高级 第一章 数据完整性 1.1 数据库的完整性 1.2 实体完整性 1.2.1 主键约束(primar ...

  5. Java从入门到实战总结-3.5、Java网络编程

    Java从入门到实战总结-3.5.Java网络编程 文章目录 Java从入门到实战总结-3.5.Java网络编程 1.网络简述 (1).什么是计算机网络 (2).什么是计算机的IP地址 (3).什么是 ...

  6. 大数据从入门到实战 - 第3章 MapReduce基础实战

    大数据从入门到实战 - 第3章 MapReduce基础实战 一.关于此次实践 1.实战简介 2.全部任务 二.实践详解 1.第 1 关:成绩统计 2.第 2 关:文件内容合并去重 3.第 3 关:信息 ...

  7. 微信公众号Java开发-笔记01【微信公众号介绍、开发环境搭建】

    学习网址:哔哩哔哩网站 微信公众号开发-Java版 微信公众号Java开发-笔记01[微信公众号介绍.开发环境搭建] 微信公众号Java开发-笔记02[] 微信公众号Java开发-笔记03[] 微信公 ...

  8. Python零基础入门01【计算机基础和环境搭建】

    01–计算机基础和环境搭建 目标:了解计算机基础知识并完成Python的环境搭建 概要: 计算机基础 编程的本质 Python的介绍 Python环境搭建 1.计算机基础 1.1基本概念 计算机的组成 ...

  9. Android自定义控件开发入门与实战(1)绘图基础

    今天从leader那里拿到了启舰大神写的<自定义控件开发入门与实战>这本书,据说看完了,至少写起自定义view也不会慌. 最重要的是多练,所以这本书基本设计到的我没有涉及过的控件开发(之前 ...

最新文章

  1. 吸水间最低动水位标高_水库水位库容监测系统方案
  2. 字节终面:CPU 是如何读写内存的?
  3. vue-cli构建项目
  4. Model Selection Evaluation
  5. 2.7 程序示例--多分类问题-机器学习笔记-斯坦福吴恩达教授
  6. android如何编译lame,Android 编译 Lame 库心路历程
  7. Inside ASP.NET 2.0 – Controls Model(转载)
  8. 如何修改Vue打包后文件的接口地址配置
  9. Elastic Job入门(1) - 简介
  10. 协程(Coroutine)与多线程,多进程
  11. winxp一键锁定计算机,WinXP下锁定计算机的3种方法
  12. ASP.NET验证码
  13. tcpdump源码分析(3)——android系统移植(tcpdump,gdb,netstat)
  14. matlab 编写雷达波形,雷达信号处理+Matlab程序
  15. Robotframework+Appium环境搭建
  16. C#试玩程序设计试题——定向越野(迷宫)
  17. echarts双柱_R+Echarts画双坐标轴折柱混合图
  18. 电话面试的技巧和注意事项
  19. 公众号粉丝迁移需要多长时间?
  20. bs4爬取笔趣阁小说

热门文章

  1. 攻防世界 sql注入
  2. 基于STM32的双蓝牙通信
  3. 数据挖掘实战(5)——关联规则(美国国会投票数据集)
  4. Date SimpleDateFormat CalendarDate类
  5. 龙芯杯学习笔记之计算机组成和设计(硬件/软件接口)
  6. Ue4C++编程------血条与c++(一)
  7. 8.字体样式(TextStyle)
  8. 《送给八年以前两年以后的自己》
  9. QTP的键盘鼠标录制 1
  10. ubuntu20.04安装配置Qt5.15.2