学习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. where id in用 order by field 保持排序

    转载自http://blog.linuxphp.org/archives/1588/ 先看下mysql的默认排序 select id from article where id in(63261,63 ...

  2. CodeForces - 294A Shaass and Oskols

    //////////////////////////////////////////////////////////////////////////////////////////////////// ...

  3. Linux必知必会的目录与启动过程

    第1章 /etc/目录 1.1 /etc/sysconfig/network-scripts/ifcfg-eth0 linux第一块网卡的配置文件 [root@znix ~]# cat /etc/sy ...

  4. 利用echarts highcharts 实现自定义地图 关系图效果 侧边3D柱形图饼图散点图

    github 地址:  https://https://github.com/Gengshaoxuan/medataMap github 地址:  https://https://github.com ...

  5. C 程序实现密码隐秘输入 linux系统可执行

    读写用户输入,屏幕不回显 char *getpass( const char *prompt); getpass用于从键盘读取用户输入,但屏幕不回显. 参数prompt为屏幕提示字符. 函数返回值为用 ...

  6. 蓝桥杯之K好数

    如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数的数目.例如K = 4,L = 2的时候,所有K好数为11.13.20.22.30.3 ...

  7. kickstart 实现批量安装centos7.x系统

    1.1 安装系统的方法 l  光盘(ISO文件,光盘的镜像文件)===>>每一台物理机都得给一个光驱,如果用外置光驱的话,是不是每台机器都需要插一下 l  U盘:ISO镜像刻录到U盘==& ...

  8. MVC页面静态化

    MVC 页面静态化   最近工作需要,实现页面静态化,以前在ASP时代,都是FSO自己手动生成的. 新时代,MVC了,当然也要新技术,网上一搜,找到一种解决方案,是基于MVC3的,实现原理是通过mvc ...

  9. requests和BeautifulSoup

    一:Requests库 Requests is an elegant and simple HTTP library for Python, built for human beings. 1.安装 ...

  10. python基础阶段 经典练习题 拾英札记(3)

    对于编程学习来说,动手操练和重复训练很重要. 因为这是一个注重实践的活,最终要下笔落字. 更何况,即使你看了很多博客,听了很多课,你脑中的认识和手指下的-屏幕上的反馈,逻辑上是两个维度-两个载体的,中 ...