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周学习任务和要求 第 ...
随机推荐
- Chapter5 生长因子、受体和癌症
一.Src蛋白是一种蛋白激酶 可以磷酸化不同的底物,调节不同的通路 Src激酶主要磷酸化酪氨酸残基,而别的激酶主要磷酸化色氨酸.苏氨酸残基 二.EGF受体拥有酪氨酸激酶功能 胞内结构域有Src蛋白的同 ...
- 2018/7/26号碰到了个奇怪的问题(http有问题,但是ftp没毛病)
过程大概是这样的 本来测试服务器中发ajax没问题,突然暴毙了,服务器又通过ajax发了另外一个请求(与之前不一样). nginx reload 没毛病 ,ftp 也使用正常. 出了什么问题呢? ...
- 软件包管理之rpm与yum
软件包的安装和卸载时很平常的事,但在Linux上面却不简单..Linux的其中一个哲学就是一个程序只做一件事,并且做好.组合小程序来完成复杂的任务,这样做有很多好处,但是各个小程序之间往往会存在着复杂 ...
- 小程序基础知识点讲解-WXML + WXSS + JS,生命周期
小程序基础 小程序官方地址,小程序开发者工具,点击此处下载.在微信小程序中有一个配置文件project.config.json,此文件可以让开发者在不同设备中进行开发. 微信小程序共支持5种文件,wx ...
- 你不知道的javascript读书笔记3
概述 这是我看<你不知道的JavaScript(中卷)>中关于类型检查的笔记,供以后开发时参考,相信对其他人也有用. typeof 我们知道js中有七种内置类型:undefined, nu ...
- js中的柯里化
概述 今天查询事件绑定资料的时候偶然遇到了柯里化这个词,很感兴趣,于是记录下来供以后开发时参考,相信对其他人也有用. 定义 柯里化是函数式编程里面的术语,它是把接受多个参数的函数变换成接受一个单一参数 ...
- struts2框架学习笔记4:获取参数
第一种参数获取方式: 编写一个前端页面,提交表单,做示例: <form action="${pageContext.request.contextPath}/Demo1Action&q ...
- OpenGL ES: 纹理采样 texture sample
Sampler (GLSL) Sampler通常是在Fragment shader(片元着色器)内定义的,这是一个uniform类型的变量,即处理不同的片元时这个变量是一致不变的.一个sampler和 ...
- Autowired byType 与 byName 策略
@Autowired是spring的注解,默认使用的是byType的方式向Bean里面注入相应的Bean.例如: @Autowiredprivate UserService userService;这 ...
- ffmpeg 处理视频项目中用到的一些命令
多媒体视频处理工具FFmpeg有非常强大的功能包括视频采集功能.视频格式转换.视频抓图.给视频加水印等. 目前仅接触到了一些初级命令,今天进行了简单整理. 分辨率 //智能1:1缩放 -i : -vf ...