学习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. poj 3321Apple Tree

    Apple Tree Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit S ...

  2. Python学习第一周

    一.我的第一个程序 print("Hello word!") 所以说python是一款非常简洁的语言,不像c,c++等等写一个简单的小程序还要调用一堆库.另外,python 3的版 ...

  3. BZOJ-1864-[Zjoi2006]三色二叉树(树形dp)

    Description Input 仅有一行,不超过500000个字符,表示一个二叉树序列. Output 输出文件也只有一行,包含两个数,依次表示最多和最少有多少个点能够被染成绿色. Sample ...

  4. HTML超连接的使用

    1,基本语法:<a href="" target="打开方式" name ="页面锚点名称">连接文字或者图片</a> ...

  5. linux DHCP安装和测试

    1.Yum 安装DHCP服务 2.拷贝模板配置文件,方便后期的配置修改. cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd. ...

  6. Linux上jdk的安装

    安装jdk    a.检测是否安装了jdk  运行java -version    b.若有需要将其卸载    c.查看安装那些jdk        rpm -qa | grep java    d. ...

  7. 分享一个单例模型类Singleton代码

    相关代码: ;                foreach (string key in dict.Keys)                {                    if (cou ...

  8. jquery.tagsinput的使用例子,包括模糊查询后端代码

    <link rel="stylesheet" type="text/css" href="~/lib/jquery.tagsinput.jurg ...

  9. 新建Vue项目

    新建Vue项目 1.安装Vue命令行工具,webpack和git,使用淘宝镜像CNPM.参考http://www.imooc.com/video/12299 2.打开命令行,进入到要存放的目录,win ...

  10. ZooKeeper入门

    ZooKeeper简介 ZooKeeper是一个构建在Paxos算法上的高可用的分布式数据管理与系统协调框架,提供了一系列原语集,更上层的应用可以用它来实现同步,配置管理,名称服务,Master选举, ...