学习Java需要了解必要的Java历史,不要觉得Java历史对学习Java编程没有任何帮助。在任何时候,了解一门语言的历史都能帮助更好地理解这门语言的精髓。以前在学习语文时,在分析一篇文章,通常会通过5W2H分析法来分析一篇文章的始末。这里我也将通过5W2H中的4W1H来带大家走近Java。(4W1H:Who,What,Why,When,How)

引用《深入理解Java虚拟机》一书中的一句话作为开篇:

世界上并没有完美的程序,但我们并不因此而沮丧,因为写程序本来就是一个不断追求完美的过程。

一、Who

Java之父:詹姆斯-高斯林。我们习惯称之为高司令。1991年4月,由高司令领导的绿色计划开始启动,这个计划的产品就是Java语言的前身:Oak(橡树)。随着1995年互联网潮流的兴起,Oak迅速找到了最适合自己发展的市场定位并蜕变成为Java语言。

主要公司:Sun(Stanford University Network,斯坦福大学网络公司)。Oracle,2009年4月20号收购Sun公司。

二、What

Java概述与其体系结构

Java不仅仅是一门编程语言,还是一个由一系列计算机软件和规范形成的技术体系。这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统,移动终端,企业服务器、大型机等各种场合。Java体系结构主要包括:Java程序设计语言、支持各种硬件平台的Java虚拟机、Class文件格式、Java API类库、第三方Java类库。

对于这几个组成部分的名词解释:API,英文全称为Application Programming Interface,应用程序编程接口。可以简单理解为Java里写好的一些代码,可根据规则直接来使用以达到某种目的的方法。Class文件格式,即Java是一种编译型语言,即它的语法不能直接被计算机识别,需要编译后才能识别。源码文件以.java结尾,而编译后的文件以.class结尾。

通常我们把Java程序设计语言、Java虚拟机、Java API类库这三部分统称为JDK(Java Development Kit)。从英文全称中的development也可以推测出它是用于开发的。JDK是用于支持Java程序开发的最小环境。在后面我们讲Java环境搭建时其实就是配置JDK的环境。另外Java 核心API与Java虚拟机这两部分称为JRE(Java Runtime Environment),即JRE主要用于支持Java程序的运行。

Java语言平台

  • J2SE(Java 2 Platform Standard Edition):是为开发普通桌面和商务应用程序提供的,它是其他两者的基础。像我们入门学习Java写的一些程序都属性J2SE

  • J2ME(Java 2 Platform Micro Edition):是为开发电子消费产品和嵌入式设备

  • J2EE(Java 2 Platform Enterprise Edition):主要针对Web应用程序开发。后续将会进行知识点介绍

三、Why

Java语言的优点

  1. 一次编写,多处运行:这个优点是所有Java程序员都知道的一个优点。它摆脱了硬件平台的束缚。

  2. 提供了一个相对安全的内存管理和访问机制,这点对于学过C语言的人会比较有同感,在C语言里,经常会有指针滥用的情况,而在Java则避免了绝大部分的内存泄露和指针越界问题

  3. 有完善的类库和无数第三方类库来帮助实现各种各样的功能

......

四、When

Java发展史

1991年4月,绿色计划开启;

1995年5月,Oak语言改名为Java。也就是Java语言诞生的年份;

1996年1月,JDK1.0发布;

JDK1.0一共发布了1.1.0~1.1.8九个版本,中间经历了1.2,1.3,1.4,1.5,1.6,1.7,1.8,到现在1.9已经发布。

其中比较有历史意义的版本有:

JDK1.5,引入了自动装箱、泛型、动态注解、可变参数等诸多新特性。JDK1.7,1.8现在比较常用的两个版本,1.8引入了许多有用的新特性,比如lamda表达式等。

Java虚拟机发展

Java虚拟机的存在是使得Java实现一处编写,多处运行的关键。这里我们只需要了解目前使用得最为广泛的Java虚拟机是HotSpot VM。后面深入学习Java时,再进行介绍。感兴趣的可以查阅《深入理解Java虚拟机》一书,或自行查找相关资料。

五、How

如何学习Java

对于任何一门编程语言,学习的方法都是通用的,那就是写代码,只有写代码,测试出来的结果才是最可靠,也是最容易记住的。如果你是小白,新入门一门语言,那么在学习的时候,不要钻牛角尖,先记住用法,学会之后再了解原理,先会用再去知道为什么要这样用。如果你是已经学过一门语言的人,再接触新语言时,大致浏览新语言的语法即可。注意多种语言之间的对比。当然不管什么方法,最为关键的还是多写,多百度,多google。

走近Java的更多相关文章

  1. Java进阶之路 - 1.走近Java

    Java进阶之路 - 1.走近Java 一.走近Java思维导图

  2. 走近Java之包装器类Integer

    前几天,有个同事问了我一个关于Integer类赋值的问题,很有意思,我们一起来看一下(如果有说的不正确的地方,欢迎大家指正). 如上图,同样是赋值,但是两次比较的结果完全不同.我们走近了解一下. 在I ...

  3. 深入理解 Java 虚拟机——走近 Java

    1.1 - 概述 Java 总述:Java 不仅是一门编程语言,还是一个由一系列 计算机软件 和 规范 形成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于 嵌入式 ...

  4. 走近Java之幕后的String

    前几天,有个同事问了我一个表面看起来显而易见的问题,是关于String的,我们一起来看一下(如果有说的不正确的地方,欢迎大家指正). java中,字面量在编译期计算,并且String字面量作为常量,存 ...

  5. 走近Java之HashMap In JDK8

    HashMap,继承AbstractMap类,实现了Map接口,特性是无序不可重复,其本身的数据结构是数组加链表和红黑树.今天我们就一起来详细了解一下. 首先,需要知道,HashMap中几个关键词的含 ...

  6. 《深入理解Java虚拟机:JVM高级特性与最佳实践》【PDF】下载

    <深入理解Java虚拟机:JVM高级特性与最佳实践>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230062566 内容简介 作为一位 ...

  7. 深入理解Java虚拟机-第1章-走进Java-读书笔记

    第 1 章 走近 Java 前言 Java 的技术体系主要是由支撑 Java 程序运行的虚拟机.为各开发领域提供接口支持的 Java API.Java 编程语言及许许多多的第三方 Java 框架(如 ...

  8. [深入理解Java虚拟机]<自动内存管理>

    Overview 走近Java:介绍Java发展史 第二部分:自动内存管理机制 程序员把内存控制的权利交给了Java虚拟机,从而可以在编码时享受自动内存管理.但另一方面一旦出现内存泄漏和溢出等问题,就 ...

  9. 《深入理解Java虚拟机》学习笔记

    <深入理解Java虚拟机>学习笔记 一.走近Java JDK(Java Development Kit):包含Java程序设计语言,Java虚拟机,JavaAPI,是用于支持 Java 程 ...

随机推荐

  1. Lua中metatable和__index的联系

    Lua中metatable和__index的联系 可以参考 http://blog.csdn.net/xenyinzen/article/details/3536708 来源 http://blog. ...

  2. Increasing Speed Limits

    Increasing Speed Limits Time Limit: 2000/10000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...

  3. Android 开发笔记___alertDialog

    public class AlertActivity extends AppCompatActivity implements OnClickListener { private TextView t ...

  4. 详细图解window环境mongodb下载、安装、配置与使用

    到官网下载最新版面mongodb安装包,(32位版本的已经取消了,只有64位的) 官网地址: https://www.mongodb.com/download-center#community 下载完 ...

  5. JSON相关知识整理

    JSON   全称:JavaScript Object Notation ,一种轻量级的数据交换格式 示例:{"name":"eric","age&q ...

  6. HQL连接查询和注解

    HQL连接查询和注解 一:HQL连接查询 各种连接查询: 内连接:inner join或join From Entity inner [inner] join [fetch] Entity.prope ...

  7. boot之mybatis

    特别注意,此种方法和starter不兼容,我用了两个方式混蛋,发现跑不起来! spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driv ...

  8. scala(一)Nothing、Null、Unit、None 、null 、Nil理解

    相对于java的类型系统,scala无疑要复杂的多!也正是这复杂多变的类型系统才让OOP和FP完美的融合在了一起! Nothing: 如果直接在scala-library中搜索Nothing的话是找不 ...

  9. No bean named 'sqlSessionFactory' is defined

    其实程序给出这个错误已经很明确了,说你的sqlSessionFactory是未定义的. 首先你要查看一下自己的web.xml文件是否配置了application*.xml <!--设置sprin ...

  10. 10. 管理Apache ZooKeeper配置

    Tips 有关ZooKeeper部署和管理的详细说明,请参阅官方文档http://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html. 1. 配置Zo ...