[JIT_APP]Java基础知识总结

摘要:
比如Java版的扫雷。包括了JRE,是开发Java的人员必备的开发运行Java程序的工具。这就要谈及Java虚拟机。Sun公司对多种程序设计语言进行了深入研究,并摒弃了其他语言的不足之处,最终推出了Java。Java和C/C++的相似之处多于不同之处,有C基础的读者,学习Java会更容易。相比较而言,Java的编程环境更为简单。在Java中没有指针,更有利于Java程序的安全。
一、Java语言的基础知识

1. 开发Java语言的公司

美国Sun(Sum Microsystems)公司开发。

2.Java的3个版本

J2SE(Java2 Standard Edition) 标准版,是为开发普通桌面和商务应用程序提供的解决方案。该技术体系是其他两者的基础,可以完成一些桌面应用程序的开发。比如Java版的扫雷。平时所说的JDK其实就是指J2SE。

J2EE(Java 2 Platform,Enterprise Edition) 企业版,是为开发企业环境下的应用程序提供的一套解决方案。该技术体系中包含的技术如Servlet Jsp等,主要针对于Web应用程序开发。

J2ME(Java 2 Micro Edition) 小型版,是为开发电子消费产品和嵌入式设备提供的解决方案。该技术体系主要应用于小型电子消费类产品,如手机中的应用程序等。这里的小型电子消费品不是指搭载了IOS或Android操作系统的手机,IOS和Android系统都有自己的开发组件。

两点注意:

Java5.0版本后,J2EE、J2SE、J2ME分别更名为JAVAEE JAVASE JAVAME。

每个版本名称中都带有一个数字"2",这个"2"是指Java2:自从 Java1.2 发布后,Java 改名为 Java2(不过我们平时仍然称为 Java)。

3.Java语言的几个主要特点

平台无关性:能运行于不同的平台上
安全性:去掉了指针操作,内存由操作系统分配
面向对象:利用类使程序更加利于维护
分布式:可以使用网络文件和使用本机文件一样容易
健壮性:检查程序编译和运行的错误

4.Java的三大核心机制

虚拟机机制:利用虚拟机解释字节码执行java程序实现跨平台
垃圾收集机制:自动内存回收
代码安全性机制:加载代码后校验代码后再执行代码。

5.JDK是什么

JDK(Java Development Kit)Java开发工具包。包括了JRE,是开发Java的人员必备的开发运行Java程序的工具。

6.JRE是什么

JRE(Java Runtime Environment)Java运行环境,运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。

7.JVM是什么

JVM (Java Virtual Machine) Java虚拟机,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

8.Java文件的类型

有两种:
扩展名为java的文件:是Java源文件,属于编译之前的纯文本文件,存储java源代码。
扩展名为class的文件:是Java类文件,属于编译之后的二进制文件,存储字节码。

9.Java的编译运行原理

首先编写java源文件,然后编译成class类文件,然后通过虚拟机解释成机器码到硬件执行。

10.Java是编译型语言还是解释型的语言

既不是完全编译型,也不是完全解释型,是半编译半解释的。

二、Java在哪些方面有应用

Java 的应用可以简单分为以下几个方面:

1.Java的桌面应用

桌面应用仅仅需要JRE的支持就足够了。

2.Java Web应用

Java的Web应用至少需要安装JDK和一个Web容器(例如 Tomcat),以及一个多用户数据库,Web应用至少分为3层:

Browser层:浏览器显示用户界面

Web层:运行Servlet/JSP

DB层:后端数据库,向Java程序提供数据访问服务

3.Java企业级应用

企业级应用不叫复杂,可以扩展到n层,最简单情况会分为4层:

Browser层:浏览器显示用户界面

Client层:Java客户端图形程序(或者嵌入式设备的程序)直接和Web层或者EIB层交互

Web层:运行Servlet/JSP

EJB层:运行EJB,完成业务逻辑运算

DB层:祸端数据库,向Java程序提供数据访问服务

4.Java嵌入式应用

Java嵌入式应用是一个方心未艾的领域。嵌入式开发,需要从下载J2ME开发包,J2ME包含了嵌入式设备专用虚拟机KVM,和普通的JDK中包含的JVM有所不同,另外还需要到特定的嵌入式厂商那里下载模拟器。

三、Java语言概述

Java语言是SUN(Stanford University Network,斯坦福大学网络公司)公司1995年推出的一门高级编程语言,起初主要应用在小型消费电子产品上,后来随着互联网的兴起,Java语言迅速崛起,成为大型互联网项目的首选语言。2009年04月20日,美国甲骨文公司74亿美元收购Sun,取得java的版权。
更多关于Java的历史发展信息请参考:http://baike.baidu.com/view/29.htm#2

Java语言的崛起,与它的跨平台特性有着密切的关系。这里所说的"平台"主要是指不同的操作系统,所谓跨平台,是指通过Java语言编写的应用程序可以在不同的系统平台上平稳运行。
更多特性请参考:Java的特点
那么,跨平台是怎样实现的呢?这就要谈及Java虚拟机(Java Virtual Machine,简称 JVM)。
Java虚拟机可以理解为软件模拟的计算机,可以在任何处理器上(无论是在计算机中还是在其它电子设备中)安全并且兼容的执行程序。我们编写的Java源代码,编译以后会生成一种 .class 的文件,称为 字节码文件。java虚拟机就是负责将字节码文件翻译成特定的机器码然后运行,也就是说,只要在不同平台上安装相应的JVM,就可以运行字节码文件,运行我们编写的Java程序。
而这个过程中,我们编写的Java程序没有做任何改变,仅仅是通过JVM这一"中间层",就能在不同平台上运行,真正实现了"一次编译,到处运行"的目的。
关于JVM的更多解释,请查看:http://baike.baidu.com/view/160708.htm
总结:JVM是一个"桥梁",是一个"中间件",是实现跨平台的关键,Java代码首先被编译成字节码文件,再由JVM将字节码文件翻译成机器语言,从而达到运行Java程序的目的。
如下图所示,正是因为有了JVM,同一个Java程序才可以在三个不同的操作系统中执行。这样就就实现了Java程序的跨平台性,也称Java具有良好的可移植性。

[JIT_APP]Java基础知识总结第1张

图解Java实现跨平台的过程

四、Java与C/C++的区别

首先应该清楚,Java 是由 C++发展而来的,保留了 C++的大部分内容,其编程方式类似于 C++。但 Java 的句法更清晰、规模更小、更易学。Sun 公司对多种程序设计语言进行了深入研究,并摒弃了其他语言的不足之处,最终推出了 Java。正是这样,Java 从根本上解决了 C++的固有缺陷,形成了一种新的完全面向对象的语言。
Java 和 C/C++的相似之处多于不同之处,有 C 基础的读者,学习 Java 会更容易。相比较而言,Java 的编程环境更为简单。因篇幅所限,这里不能完全列出不同之处,仅列出一些比较显著的区别。
指针
Java 没有指针的概念,从而有效地防止了在 C/C++语言中,容易出现的指针操作失误(如指针悬空所造成的系统崩溃)。在 C/C++中,指针操作内存时,经常会出现错误。在Java 中没有指针,更有利于 Java 程序的安全。
多重继承
C++支持多重继承,它允许多父类派生一个子类。也就是说,一个类允许继承多个父类。尽管多重继承功能很强,但使用复杂,而且会引起许多麻烦,编译程序实现它也很不容易。所以 Java 不支持多重继承,但允许一个类实现多个接口。可见,Java 既实现了 C++多重继承的功能,又避免了 C++的许多缺陷。
数据类型
Java 是完全面向对象的语言,所有方法和数据都必须是类的一部分。除了基本数据类型之外,其余类型的数据都作为对象型数据。例如对象型数据包括字符串和数组。类将数据和方法结合起来,把它们封装在其中,这样每个对象都可实现具有自己特点的行为。而 C++将函数和变量定义为全局的,然后再来调用这些函数和变量,从而增加了程序的负担。此外,Java 还取消了 C/C++中的结构和联合,使编译程序更简洁。
自动内存管理
Java 程序中所有的对象都是用 new 操作符建立在堆栈上的,这个操作符类似于 C++的"new"操作符。Java 自动进行无用内存回收操作,不需要程序员进行删除。当 Java 中一个对象不再被用到时,无须使用内存回收器,只需要给它加上标签以示删除。无用内存的回收器在后台运行,利用空闲时间工作。而 C++中必须由程序释放内存资源,增加了程序设计者的负担。
操作符重载
Java 不支持操作符重载,操作符重载被认为是 C++的突出特征。在 Java 中虽然类可以实现这样的功能,但不支持操作符重载,这样是为了保持 Java 语言尽可能简单。
预处理功能
C/C++在编译过程中都有一个预编译阶段,即预处理器。预处理器为开发人员提供了方便,但增加了编译的复杂性。Java 允许预处理,但不支持预处理器功能,因为 Java 没有预处理器,所以为了实现预处理,它提供了引入语句(import),它与 C++预处理器的功能类似。
Java 不支持缺省函数参数,而 C++支持。
在 C 中,代码组织在函数中,函数可以访问程序的全局变量。C++增加了类,提供了类算法,该算法是与类相连的函数,C++类方法与 Java 类方法十分相似。由于 C++仍然支持 C,所以 C++程序中仍然可以使用 C 的函数,结果导致函数和方法混合使用,使得 C++程序比较混乱。
Java 没有函数,作为一个比 C++更纯的面向对象的语言。Java 强迫开发人员把所有例行程序包括在类中。事实上,用方法实现例行程序可激励开发人员更好地组织编码。
字符串
C 和 C++不支持字符串变量,在 C 和 C++程序中使用"Null"终止符代表字符串的结束,在 Java 中字符串是用类对象(String 和 StringBuffer)来实现的,在整个系统中建立字符串和访问字符串元素的方法是一致的。Java 字符串类是作为 Java 语言的一部分定义的,而不是作为外加的延伸部分。此外,Java 还可以对字符串用"+"进行连接操作。
goto 语句
"可怕"的 goto 语句是 C 和 C++的"遗物"。它是该语言技术上的合法部分,引用 goto语句造成了程序结构的混乱,不易理解。goto 语句一般用于无条件转移子程序和多结构分支技术。Java 不提供 goto 语句,其虽然指定 goto 作为关键字,但不支持它的使用,这使程序更简洁易读。
类型转换
在 C 和 C++中,有时出现数据类型的隐含转换,这就涉及了自动强制类型转换问题。例如,在 C++中可将一个浮点值赋予整型变量,并去掉其尾数。Java 不支持 C++中的自动强制类型转换,如果需要,必须由程序显式进行强制类型转换。

免责声明:文章转载自《[JIT_APP]Java基础知识总结》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Java的第一课(j2sdk + Tomcat 5.0)01--Java开发中文乱码问题分析下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

轻松简单搭建Linux下的C#开发环境<转>

先看看本篇文章最终效果:在 Ubuntu 里跑的开 发环境 MonoDevelop   [图 片:MonoDevelop1.png]如 果平时主要开发控制台类、组件、后端服务等程序,可以尝试在Linux类操作系统下搭建C#.Net开发环境,好处是在Linux环境里你不用担心朋友或 同事拿你的电脑来玩魔兽世界或者一不小心被装了一大堆流氓软件 ;-)1、Lin...

lua API 小记2

1. 创建lua虚拟机 lua_State *lua_newstate (lua_Alloc f, void *ud) 创建一个新的独立的lua虚拟机. 参数指定了内存分配策略及其参数, 注意, 让用户可以定制内存分配策略是十分有用的, 比如在游戏服务器端使用lua, 我做过一次统记lua在运行的时候会大量的分配大小小于128字节的内存块, 在这样的环境下...

VMWare DOS 文件共享

VMWare DOS 文件共享 vmware 下 DOS 不能安装vmware tools ,所以不能直接共享文件。 一种办法是用DOS的网络功能,用FTP。 另一种是用光盘,只说第二种: 步骤:1.下载VMWare dos镜像 WINISO2.安装VMWare3.VMWare新建虚拟机。选择MS-DOS。4.在新建的虚拟机中,将软盘设置成下载的DOS镜像...

虚拟化之KVM的安装篇

1,在安装KVM之前,首先需要在自己的电脑开启cpu虚拟化技术(这个需要BIOS中设置)。 如下操作都是在本人虚拟机中设置,所以可以看到我多添加一块磁盘,目的是用来做kvm虚拟机的磁盘。 另外,虚拟机你也需要开启cpu虚拟化技术。 介于网络环境的原因,我选择NAT. 2,安装kvm前的准备工作 2.1 关闭防火墙  setenforce 0    vi...

VirtualBox中安装Fedora9及其ARM开发环境配置

  因为要学习Tiny4412开发板的嵌入式编程,需要用到Fedora9系统(和手册对应),我就在VirtualBox虚拟机(此虚拟机安装在Ubuntu12.04上)上安装了Fedora9,下面就讲解一下Fedora9的安装及其配置。 安装Fedora9 1、下载Fedora9镜像文件,我下载的是Fedora-9-i386-DVD.iso 2、打开Virtu...

HyperV应用指南之5-导出、导入虚拟机[转]

 导出、导入虚拟机 使用一个设置好的“模板”虚拟机创建多个相同的备份,有两种方法,一种是将选定的虚拟机“导出”然后再改名“导入”,这种方法创建的虚拟机与原虚拟机完全一样,包括占用的硬盘空间大小都相同;另一种是以“模板”虚拟机为基准,使用“差异”磁盘创建多个虚拟机,新创建的虚拟机“依附”模板虚拟机的磁盘,而新虚拟机的改动将只反映在新创建的“差异”磁盘中,并占...