Java程序设计概述
摘要:1996年Java第一次发布就引起了人们的广大关注。本文简要地介绍一下Java语言的发展历史。
一、Java程序设计平台
Java是一种优秀的程序设计语言。一旦一种语言应用于某个领域,与现存代码的兼容性问题就摆在了人们的面前。这就导致Java在发展之初没有那么完美无瑕,但是,Java的发展是不断追求进步与完善的过程。在第一次发布时,Java的问世引起了业界的极大关注,举个真实的栗子,当时关注Java的人士不仅限于计算机出版界,还有诸如《纽约时报》《华盛顿邮报》《商业周刊》这样的主流媒体。
Java是个一完整的平台,有一个庞大的库,其中包含了很多的代码和一个提供诸如安全性、跨操作系统的可移植性以及自动垃圾手机等服务的执行环境。
作为一名程序设计人员,很希望能有一种语言,它的语法易于理解、可操作性强,Java满足这些要求的。Java有着功能齐全的出色语言,和高质量的执行环境,还提供了庞大的库。这些正是它的魅力所在。
二、探索Java的神奇所在
1.简单性
Java剔除了C++中许多很少使用、难以理解、易混淆的特性。相当于,Java是C++语法的一个“纯净”版本。这里没有头文件、指针运算(甚至指针语法)、结构、联合、操作符重载、虚基类等。当然,Java并没有完全剥离掉与C++语法上的共同性。比如,switch语句的语法在Java中就没有改变。
另外,Java的简单性还体现在,Java的目标之一是支持开发能够在小型机器上独立运行软件。基本的解释器以及类支持大约仅为40KB;再加上基础标准类库和对线程的支持(基本上是一个自己包含的微内核)大约需要增加175KB。
在当时,这已经是了不起的飞跃了。而今,由于不断的扩展,库类已经相当庞大了。现在有一个独立的具有较小库类的Java微型版(Java Micro Edition),这个版本适用于嵌入式设备。
2.面向对象
面向对象设计是一种程序设计技术。它将重点放在数据(即对象)和对象的接口上。
3.分布式
Java有一个丰富的例程序,用于处理像HTTP和FTP之类的TCP/IP协议。Java应用程序能够通过URL打开访问网络上的对象,其操作性就像访问本地文件那么简单。
(补充两个名词解释:1.Sandboxie:即沙箱或沙盘,是一个虚拟系统程序,允许你在沙盘环境中运行浏览器或其他程序,因此y运行时所产生的变化可以随后删除它。其为独立的虚拟环境,可以用测试不受信任的应用程序或上网行为。2.Visual Basic:是由微软公司开发的结构化模版化的、面向对象的,包含开发环境的事件驱动为机制的可视化程序设计语言。)
4.健壮性
Java编译器能够检测出许多其他语言中仅在运行时才能够检测出来的问题。Java和C++最大的不同在于Java采用的指针模型可以消除重写内存和损坏数据的可能性。
5.安全性
Java适用于网络/分布式环境。从一开始,Java就设计能够防范各种攻击:
1)运行时推栈溢出。
2)破坏自己的进程空间之外的内存。
3)未经授权读写文件。
最初,Java开发包(Java Development Kit,JDK)的第一版本问世不久,就被发现存在bug,也多次被黑客攻击。为修复bug,sun以及之后的Oracle公司度过了很艰难的时期。Java浏览器插件不再信任远程代码,除非代码有数字签名而且用户同意执行这段代码。
6.体系结构中立
编译器生成一个体系结构中立的目标文件格式,这是一种编译过程的代码,只要有Java运行时系统,这些编译后的代码可以在许多处理器上运行。
7.可移植性
与C和C++不同,Java规范中没有“依赖具体实现”的地方。其基本数据类型的大小以及有关运算都做了明确的说明。Java库能够很好的支持平台独立性。你可以处理文件、正侧表达式、XML、日期和时间、数据库、网络链接、线程等,而不用操心底层操作系统。
8.解释型
Java解释器可以在任何移植了解释器的机器上执行Java字节码。由于链接是一个增量式且轻量级的过程,使得开发环境更加便捷。
9.高性能
Java更高性能的体现,字节码可以(在运行时刻)动态地翻译称对应运行这个应用的特定CPU的机器码。
10.多线程
多线程可以更好的交互相应和实时行动。
例如,在并发程序设计这块。Java在问世之初,当时,多核处理器还很神秘,而WEB编程才刚刚起步,处理器要花很长时间等待服务器响应,需要并发程序设计来确保用户界面不会被“冻住”。Java在这方面表现出色,在当时就能很好的处理此事。
11.动态性
Java比C或C++更具动态性。它能够适应不断发展的环境。库中可以自有的添加心方法和实例变量,而对客户端不会有影响。
三、Java applet与Internet
在网页中运行的Java程序称为applet。有使用applet,需要启动Java的Web浏览器执行字节码。在Adobe的Flash技术变得流行时,Java遭到了严重的安全问题,浏览器和Java浏览器插件变得限制越来越多。如今,要在浏览器中使用applet,是有一定的难度的。
四、Java发展历史
1.Java语言的前身:Oak(橡树)
2.Java语言的版本:
-JavaSE:(java2 Stardard Edition)标准版,定位客户端,主要用于桌面程序的开发
-JavaME:(java2 Micro Edition)微型版,主要用于嵌入式系统开发。(现在,不怎么用了!)
-JavaEE:(Java2 Enterprise Edition)企业版,定位在服务端,主要用于分布式系统,一些大型的电子商务系统的开发。
2017-05-27 14:11:27
Java程序设计概述的更多相关文章
- Java核心技术(Java白皮书)卷Ⅰ 第一章 Java程序设计概述
第1章 Java程序设计概述1.1 Java程序设计平台 具有令人赏心悦目的语法和易于理解的语言,与其他许多优秀语言一样,Java满足这些要求. 可移植性 垃圾收集 提供大型的库 如果想要有奇特的绘 ...
- 基础知识(1)- Java程序设计概述
1.1 Java程序设计平台 1.2 Java“白皮书”的关键术语 1.2.1 简单性 1.2.2 面向对象 1.2.3 网络技能 1.2.4 健壮性 1.2.5 安全性 1.2.6 体系 ...
- 第一章 Java程序设计概述
1.1 Java程序设计平台 Java是一门设计优秀的语言,更是一个完整的平台.Java平台包括了一个庞大可重用的类库以及提供了安全性,跨系统,自动垃圾收集等优秀特性的执行环境. 这也使其成为自发布以 ...
- java核心技术学习笔记之一程序设计概述
Java 核心技术之一程序设计概述 一. Java语言的特点 简单行 :取经于C++,排除了C++不常用的指针.结构等,增加垃圾回收. 面向对象:与C++不同是单继承,但是可以继承多接口.完全面向 ...
- Notes 20180506 : Java程序设计语言概述
2.Java程序设计语言概述 如果对于开发语言的排行榜有所关注的话,那么会发现很长一段时间以来Java都是位居榜首的高级开发语言,作为一个Java开发者,为此感到骄傲的同时也深感忧虑,骄傲的是自己接触 ...
- Java程序设计环境概述
本文主要Java程序设计环境的要点,以及相关注意事项. 一.安装Java开发包 Oracle公司为Linux.Mac OS X.Solaris和Windows提供了Java开发工具包(JDK)的最新. ...
- 《Java程序设计》 课程教学
<Java程序设计> 课程教学 给学生 考核方式 100分构成 翻转课堂考核12次(5*12 = 60):每次考试20-30道题目,考试成绩规格化成5分(比如总分20分就除以4) 注意:不 ...
- 2016-2017-2 《Java程序设计》教学进程
2016-2017-2 <Java程序设计>教学进程 目录 考核方式 课前准备 教学进程 第00周学习任务和要求 第01周学习任务和要求 第02周学习任务和要求 第03周学习任务和要求 第 ...
- 2015-2016-2 《Java程序设计》教学进程
2015-2016-2 <Java程序设计>教学进程 目录 考核方式 寒假准备 教学进程 第00周学习任务和要求 第01周学习任务和要求 第02周学习任务和要求 第03周学习任务和要求 第 ...
随机推荐
- 描述linux下文件删除的原理
Linux文件删除原理: Linux是通过link的数量来控制文件删除的,只有当一个文件不存在任何link的时候,这个文件才会被删除. 一般来说,每个文件都有2个link计数器:i_count 和 i ...
- 使用Docker搭建CentOS 7 + Apache 2.4+ PHP7
从Docker Hub上Pull最新的CentOS 7镜像并新建容器 # sudo docker pull centos docker run -p 8082:80 --name centos_c - ...
- 利用ADO打开Access数据(64位系统)
64位的access一定要用64的程序才能正确打开,仍然用"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Test.accdb;Persist ...
- [UWP] 用 AudioGraph 来增强 UWP 的音频处理能力
Audio Graph AudioGraph 是 Windows.Media.Audio 命名空间下提供的音频处理接口之一. 可以通过 AudioGraph 的静态方法 CreateAsync 来实例 ...
- cad.net 利用win32api实现一个命令开关参照面板
首先我要判断是否已经打开了参照面板. 然而cad自己没有相关的系统变量.这时我就需要利用到win32api来判断程序是否打开了参照面板了. 首先学习的是 https://blog.csdn.net/b ...
- celery异步认知
celery是异步任务的框架 是由python实现的异步框架. 在使用celery我们经常分为三个部分, 第一部分就是我们所说的客户端, 就是发起异步任务的一方, 第二部分 任务队列 broker 第 ...
- ubuntu 16.04下源码安装opencv3.4
源码安装opencv,遇到了一些小波折,这里做个备忘吧. 首先要下载源码,路径: https://github.com/opencv/opencv 下载成功后,在opencv的根目录下执行下面操作: ...
- 音频科普---oggs
做为一个做音频的人,很多基础的东西还是要牢记的.最近一个客户用ogg格式的音频,感觉这个很陌生,就翻了这方面的 资料.好比是认识一个大牛,只有在你有一个困扰你很久的困难问题被他瞬间解决的时候,才知道什 ...
- SeaweedFS上手使用指南
SeaweedFS是基于go语言开发的高可用文件存储系统,主要特性 1.成存储上亿的文件(最终受制于你的硬盘大小)2.速度快,内存占用小 上手使用比fastDFS要简单很多,自带Rest API. S ...
- Thread-方法以及wait、notify简介
Thread.sleep()1.静态方法是定义在Thread类中.2.Thread.sleep()方法用来暂停当前执行的线程,将CPU使用权释放给线程调度器,但不释放锁(也就是说如果有synchron ...