0、写在前面的话

我们都知道在计算机的底层,它是识别二进制的,也就是说,计算机只能认识0和1。这主要是因为电路的逻辑只有两种状态,所以只需要0和1两个数字就可以表示低电平和高电平。而计算机是由数不清的逻辑电路组成的,所以根据数不清位数的0和1进行组合来表达信息。

为了能够和计算机交流,自然需要所谓的计算机语言了:

机器指令
  • 最早,不就是0和1嘛,拿个纸带在固定位置打孔来区别就可以了,1打孔,0不打孔,再将程序通过纸带机输入计算机运算。这种相当于纯粹由0和1组成的指令,都称不上语言,难以阅读修改,也太过复杂,于是后来出现了汇编语言。



汇编语言
  • 机器语言用0和1表示我们希望计算机执行的一些操作,汇编语言的差别则是在指令的表达方式上,使用了更容易记忆的格式
  • 假设如希望操作 “寄存器BX的内容送到AX中”,机器指令是1000100111011000,汇编指令则是mov ax,bx
  • 但汇编语言是机器指令的符号表示,不同CPU有不同的指令系统,即如果采用不同的CPU,汇编语言也不同,一套代码不能在不同机器上通用
  • 同时,计算机还是只能认识0和1的,所以程序员使用汇编语言写出了源程序,还需要编译器将其转换为机器码,拿给计算机

 
高级语言
  • 把机器指令转换成人们容易记忆和识别的指令,在汇编语言中已经出现了雏形了,接下来的发展就出现了高级语言
  • 高级语言就是高度封装了机器指令的编程语言,以人类日常语言为基础,有较高的可读性,程序员编写更容易
  • 高级语言在翻译成机器指令时,有 “解释” 和 “编译” 两种方式:
    • 解释 - 编写好的代码,在计算机执行时才进行翻译
    • 编译 - 编写好的代码,会事先翻译成机器语言,计算机在操作时就可以直接使用了
  • 高级语言诸如C、C#、C++、Java、Python、PHP等

 


1、Java的前世今生

1991年1月,一个名为“Green Project”的项目启动。该项目旨在为家用电器提供支持,使这些电器智能化并且能够彼此交互,而且这些家电可以由远程客户端控制。

1991年2月,James Gosling是该项目的软件负责人和架构师。他最初的目标是为“绿色项目”找到一个适合的语言来运行。他选择了C++,并对有需要的地方进行了扩展。但是这些功能不能满足计划的需要,因此建立一门新的语言成为当务之急。他开始夜以继日地忙于新语言的开发,并将其命名为“Oak”,因为他办公室窗外有一棵橡树。
 
但Oak已被另一种已存在的编程语言使用,因此这个名字不可能再用了。James Gosling开始思考,"我们的新语言需要一个名字。" 于是他通过市场部门,请来了一个命名顾问,召开命名征集会。在会上,大家提出了很多名字,最后按大家的评选次序,将十几个名字排列成表,上报给商标律师。

排在第一位的是Silk(丝绸)。尽管大家都喜欢这个名字,但遭到James Gosling的坚决反对而作罢。排在第二和第三的都没有通过律师这一关。James Gosling最喜欢的就是排在第三位的Lyric(抒情诗)。只有排在第四位的名字、得到了所有人的认可和律师的通过。这个名字就是Java。

Java是印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名。国外的许多咖啡店用Java来命名或宣传,以彰显其咖啡的品质。

从此一个即好听又好记、具有强大的生命力的编程语言Java诞生了。

 


2、Java概述和特点

Java语言是一种优秀的编程语言。它最大的优点就是与平台无关,在Windows 9x、Windows NT、Solaris、Linux、MacOS以及其它平台上,都可以使用相同的代码。“一次编写,处处运行”的特点,使其在互联网上广泛采用。

由于Java语言的设计者们十分熟悉C++语言,所以在设计时很好地借鉴了C++语言。可以说,Java语言是一种比C++语言“还面向对象”的一种编程语言。Java语言的语法结构与C++语言的语法结构十分相似,这使得C++程序员学习Java语言更加容易。

2.1 解释执行

计算机无法理解高级语言,所以我们使用高级语言完成编程之后,还要将它翻译成机器语言。翻译,有两种方式,即编译和解释,主要是时间上的不同:
  • 编译:在程序没有执行时,就先将高级语言进行翻译,比如windows下的exe文件,之后程序就可以直接运行了;
  • 解释:在程序开始运行的时候才去翻译,而且程序每次执行都要翻译一次

而Java程序在执行后,首先是生成了class文件,成为字节码,并不是所谓的0101的机器码。在执行时,Java虚拟机的解释器,会根据当前平台的特征,对class文件进行进一步的解释,生成符合当前规范的机器码,得以运行。所以Java到底是属于编译性的语言还是解释性的语言,很难有一个准确的界定。

2.2 跨平台

跨平台其实就是建立在解释执行的基础上的,所谓“一次编写,处处运行”,得益于class字节码和Java虚拟机这个中间层。实际上真正跨平台的是Java程序,但是Java虚拟机却不是跨平台的,不同平台下需要安装不同版本的Java虚拟机。


2.3 面向对象

Java语言是一门面向对象的语言,具备面向对象语言的三大特征:封装、继承、多态。

2.4 自动垃圾回收

在Java中程序员无权回收内存,而是统一由Java虚拟机进行自动管理,对垃圾进行检查和内存释放。

2.5 鲁棒性

即是说,Java语言是健壮的。Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java也更具健壮性。

2.6 支持多线程

支持多线程编程时很多编程语言能够实现的功能,Java当然也不例外。

2.7 简单性

Java语言取消了很多容易混淆的概念,比如多继承、goto语句等。Java也没有让人头疼的指针概念,可以说是非常友好了。



3、Java语言的运行环境

3.1 JDK

Java Development Kit:给Java开发人员使用的工具包,包括Java的开发工具,也包括JRE。其中开发工具包括编译工具(javac.exe)、运行工具(java.exe)、打包工具(jar.exe)等。

JDK = JRE + 开发工具

3.2 JRE

Java Runtime Enviroment:Java的运行环境,包括Java虚拟机和Java程序运行所需的核心类库。

JRE = JVM + 核心类库

3.3 Java语言的环境配置

要使用Java语言进行程序开发,必然先要配置Java的使用环境,这个网上一搜一大把,就不具体阐述了,直接丢链接:


[01] Java语言的基本认识的更多相关文章

  1. 01.JAVA语言基础相关解答

    1.首先,第一个问题谈到一个java类文件中真的只能有一个公有类吗?并给出了以下代码.可以看出这个程序里有两个public类: 我进行了不同的调试:                           ...

  2. 【Java初探实例篇01】——Java语言基础

    示例系列,将对每节知识辅以实际代码示例,通过代码实际编写,来深入学习和巩固学习的知识点. IDE:intellij IDEA: 语言:Java 本次示例:Java语言基础知识的应用. 创建包day_4 ...

  3. Java入门 - 语言基础 - 01.Java简介

    原文地址:http://www.work100.net/training/java-intro.html 更多教程:光束云 - 免费课程 Java简介 序号 文内章节 视频 1 概述 2 主要特性 3 ...

  4. Java 语言基础 01

    语言基础·一级 什么是计算机? 计算机(Computer)全称:电子计算机,俗称电脑.是一种能够按照程序运行,自动.高速处理海量数据的现代化智能电子设备.由硬件和软件所组成,没有安装任何软件的计算机称 ...

  5. Java企业实训 - 01 - Java前奏

    前言: 虽然个人专攻.NET方向,不过由于个人是干教育行业的,方方面面的东西,不能说都必须精通,但肯定多少都会涉及到. 一个菜鸟学员,从啥都不会,经过一步步学习,最后到企业上手掌管一个模块甚至一个项目 ...

  6. 0031 Java学习笔记-梁勇著《Java语言程序设计-基础篇 第十版》英语单词

    第01章 计算机.程序和Java概述 CPU(Central Processing Unit) * 中央处理器 Control Unit * 控制单元 arithmetic/logic unit /ə ...

  7. 瘋耔java语言笔记

    一◐ java概述                                                                                        1.1 ...

  8. 用java语言实现事件委托模式

    http://blog.csdn.net/yanshujun/article/details/6494447 用java语言实现事件委托模式 2010-04-27 00:04 2206人阅读 评论(1 ...

  9. Java语言速览:StackOverflow

    关于 java Java(请不要与 JavaScript 搞混)是一种设计为与 Java 虚拟机 (JVM) 一起使用的多用途编程语言.一般将安装了相关工具可以开发并运行 Java 程序的电脑系统称为 ...

随机推荐

  1. 原型及原型链,以及prototype和__proto__属性(笔记便于以后复习)

    首先,js的数据结构有 原始类型(5种):Boolean.Number.String.Null.Underfined, 然后是引用类型:Array.Date.Error.RegExp.Function ...

  2. .net 中常用的正则表达式整理

    相信很多伙伴都跟我一样有关于正则表达式的爱和恨,怎么说呢? 因为正则表达式规则繁多且复杂,想一个一个学 全部精通,需要耗费很长时间和精力, 但是我们用的地方并不是很多,所以我觉得这类东西需要做成类似工 ...

  3. LaTeX的图片插入及排版

    LaTeX中一般只直接支持插入eps(Encapsulated PostScript)格式的图形文件, 因此在图片插入latex文档之前应先设法得到图片的eps格式的文件. UNIX下的各种应用软件都 ...

  4. Javascript中的浅拷贝和深拷贝

    很多开发语言中都有浅拷贝和深拷贝的说法,这里简单区分一下它们在Javascript中的区别,以及jQuery中深拷贝的实现. 在谈浅拷贝和深拷贝之前,先要屡清楚Javascript中的按值访问和按引用 ...

  5. 使用javaconfig配置freemarker

    package com.yy.config; import org.springframework.context.annotation.Bean; import org.springframewor ...

  6. Servlet之文件的上传与下载

    文件上传和文件下载是我们学JAVA Web时必不可少的模块.今天我们探讨下这个问题 文件上传: request.setCharacterEncoding("utf-8");//设置 ...

  7. 极化码的matlab仿真(4)——SC译码(2)

    ================================================ 首先自作多情的说一句--"抱歉!" 古语"有志者.事竟成",是 ...

  8. Microsoft .Net Remoting系列专题之二

    Microsoft .Net Remoting系列专题之二 一.远程对象的激活 在Remoting中有三种激活方式,一般的实现是通过RemotingServices类的静态方法来完成.工作过程事实上是 ...

  9. Spring 设置readonly 事务只读模式

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt394 在学习spring事务的时候,发现设置readOnly后不启作用. 查 ...

  10. ButterKnife的安装与使用以及ButterKnife右键不显示的大坑

    作为从安卓的的入门选手,第一次看到还以为是个第三方呢,从github下来之后感觉不对啊,这么多东西,后来一搜原来是个插件,而且不用从github上下载. 安装的方法很简单. 第一步:打开安卓studi ...