linkin大话java
青春不灭,理想犹存,linkin--勿忘初心!
不知不觉已经和java并肩作战将近了2年,在这2年之中模模糊糊研究了java2ee领域的好多东西,但是都没有做系统的整理。以前写的笔记也是零零散散不成一套体系,从今天开始我要回归到认真写笔记系统学习的轨迹上来 ,就从今天这篇博客开始。
- 一、Java语言的发展历程
微软总裁比尔.盖茨曾在观察了一段时间后,十分惭愧地说:“Java是长时间以来最卓越的程序设计语言”,并确定微软整个软件开发的战略从PC单机时代向着以网络为中心的计算时代转移,而购买Java则是他的重大战略决策的实施部署。当然微软与SUN也曾为纯Java对峙法庭,微软必将直接或间接将Java技术融入到其产品体系中。SUN Microsoft公司的总裁Scott McNealy认为Java为Internet 和WWW开辟了一个崭新的时代。环球信息网WWW的创始人Berners-Lee说:计算机事业发展的下一个浪潮就是Java,并且将很快发生。所以,使用Java已成大势所趋!
1998年,由于Java在安全、性能等方面到了一个关键阶段,甚至Java被列入了世纪末十大必然死亡的技术之一,十大科技成果被预言必将死亡实在是幽了一个默。1998至今,随着Java2一系列新技术如JAVA2D、JAVA3D、 SWING、 JAVA SOUND、 EJB、 SERVLET、 JSP、 CORBA、XML、JNDI等等的引入以及JVM自身的安全策略完善、效率提高,新一轮Java热潮再次被掀起。目前,国内电子商务、金融、证券、邮电、电信等行业的大部分系统几乎都正在或者准备采用部分Java技术来实现。此外国内也出现了致力于Java技术推广和开发的非盈利组织--中国“Java阵线联盟”(javaunion.org)以及一批作为该组织成员的个人Java技术网站,预计一两年内Java应用将被国内广大行业用户所接受,Java技术水平也将逐步与世界同步。
- 二、Java语言的特点
Java语言的有点主要表现在:简单、面向对象、自动的内存管理、分布计算、稳定、安全、解释执行、结构中立、平滑移植、多线程、以及异常处理等方面。
1、 简单
由于Java的结构类似于C和C++,所以一般的熟悉C与C++语言的编程人员稍加学习就不难掌握Java的编程技术了。并且Java所具有的自动内存管理机制也大大简化了Java程序设计开发。本人没有玩过别的强类型语言,所以对于这点没有太多的体会。
2、 面向对象
简单的说,面向对象设计是一种以数据(对象)以及其接口为重心的程序设计技术,面向对象的设计可以说是定义程序模块如何“即插即用”的机制。Java的面向对象机制实际上可以看作是C++面向对象机制的延伸。Java提供了简单的类机制和动态的构架模型,对象中封装了它的状态变量和方法(函数、过程),实现了模块化和信息隐藏;而类则提供了一类对象的原型,通过继承和重载机制,子类可以使用或者重新定义父类或者超类所提供的过程,从而实现代码的复用。
3、 自动内存管理
Java的自动无用内存回收集(auto garbage collectino)实现了内存的自动管理,因此简化了Java程序开发的工作,早期的gc(garbage collectino)对系统资源抢占太多而影响整个系统的运行,Java2对gc进行的改良使Java的效率有了很大提高。Gc的工作机制是周期性的自动回收无用存储单元。Java的自动内存回收机制简化程序开发的同时,提高了程序的稳定性和可靠性。
4、 分布计算
Java为程序开发提供了java.net包,该包提供了一组使程序开发者可以轻易实现基于TCP/IP的分布式应用系统。此外,Java还提供了专门针对互联网应用的类库,如URL、Java mail等等。
5、 稳定性
人们最常见的应用程序错误就是“非法访问xxx内存”,其实质是程序指针使用出错。Java拥有一种指针(pointer)模型,能够排除发生内存被覆盖和毁损数据的可能性。Java不采用指针算术法,而是提供真正的数组(Array),运行程序下标检查;另外,它也不会发生有对象类型转换将一个任意数转换成指针的情形。Java的自动内存管理在减少编程工作的同时,大大减少了运行态错误。
6、 安全性
Java的设计目的是提供一个用于网络/分布式的计算环境。因此,Java强调安全性,如确保无病毒、小应用程序运行安全控制等等。Java的验证技术是以公钥(public-key)加密算法为基础,而且从环境变量、类加载器、文件系统、网络资源和名字空间等方面实施安全策略。
7、 解释执行
Java解释器(interpreter)可以直接在任何已移植的解释器的机器上解释、执行Java字节代码,不需重新编译。当然,其版本向上兼容,因此如果是高版本环境下编译的Java字节吗到底版本环境下运行也许会有部分问题。
Java是网络空间的“世界语”,编译后的Java字节码是一种“结构中立性(architecture neutral)的目标文件格式,可以在所有提供Java虚拟机(JVM)的多种不同主机、不同处理器上运行。
“write once,run every where!”也许是Java最诱人的特点。用Java开发而成的系统其移植工作几乎为零,一般情况下只需对配置文件、批处理文件作相应修改即可实现平滑移植。
Java的多线程(multithreading)机制使程序可以并行运行。Java还有一组同步化基本单元,他们是以广泛使用的C.A.R.Hoare监视器与条件变量图为基础的。同步机制保证了对共享数据的正确操作。多线程使程序设计者可以用不同的线程分别实现各种不同的行为,而不需要采用全局的事件循环机制,因此,使用Java语言可以非常轻松地实现网络上的实时交互行为。
C语言程序员大都有使用goto语句来做条件跳转,Java编程中不支持goto语句。Java采用异常模型使程序的主流逻辑变得更加清晰明了,并且能够简化错误处理工作。以前我在研究java的异常处理的时候,很赞成李刚老师的一句话:java的异常处理机制始终是一个有所争议的话题。因为java的异常分为2种:checked异常和runtime异常。以后我会专门写一篇博客来整理java的异常处理机制。
Java目前发布的j2EE标准主要为采用Java技术为企业提供全面解决方案提供了一个技术规范框架,规划了一个利用现有和未来各种java技术整合解决企业应用远景蓝图。很高兴本人就是玩java2ee的,个人觉得java2ee的技术真的是好多的呀,为了将来能够成为一个技术大牛,我要好好的加油了。
- 三、Java语言对软件开发技术的影响
曾有人预言:“Java语言的出现,将会引起一场软件革命”,这是因为Java语言能在执行码(二进制码)上兼容,这样以前所开发的软件就能运行在不同的机器上,只要所用的机器能提供Java语言解释器即可。时至今日,Java的优势已经不再仅限于跨平台和动态页面显示,更多的优势逐步在支持CORBA、WEB服务器后端处理以及应用整合等方面的到体现。
Java语言对现在以及未来软件工程和软件发展可能产生影响,可以从以下几个方面分析:
1. 软件工程
Java适用于WEB的许多特征比如平滑移植、安全、健壮和可扩展等为面向对象软件工程设计提供了实现工具和想向空间。遵循面向对象思想,软件生命周期的各个部分都将从面向对象的角度出发实现。比如用户需求分析将被划分成具有不同状态(数据)和行为的模块,不同模块之间的联系通过消息实现等等。
2.软件的开发方法
由于Java语言的面向目标的特性,越来越多的人在用O-O开发时都在选择使用Java技术与方法来开发,这与Java的面向对象特性、模块化特性、安全性以及适应IT技术发展密不可分。
3.WEB技术
Java提供的CGI、ASP替代方法servlet/jsp以及EJB都是与互联网发展需求相呼应的,由此可见Java在未来必然紧跟互联网发展趋势,采用Java解决企业基于WEB的应用是明智选择。
4.分布式计算
Java对CORBA、RMI(远程方法调用)、EJB、XML和网络处理的支持和应用,将使未来企业分布计算向其倾斜。
5.图形处理与多媒体效果
Java2以及以后版本提供了Swing、2D、3D、Sound等图形、图象和多媒体支持类库,弥补了早期Java版本在此方面的不足。Java的媒体处理能力使程序开发在的动画效果远比GUI技术更加逼真,尤其是利用WWW提供的巨大动画资源空间,可以共享全世界的动态画面的资源。
6. 产品开发
目前Java产品主要有基于WEB的实时信息发布系统、WEB邮件系统、用于企业分布式计算的消息传输系统、基于servlet/jsp/ejb开发的电子商务平台、提供servlet/jsp/ejb开发和运行环境的应用服务器、结合CORBA/XML等技术开发的分布计算支撑平台等等。另外用Java开发的多媒体软件可以实现集可视化、可听化、可操作化于一体的效果。
- 四、Java未来前景
由于Java语言具有上述优秀特性,所以其应用前景必然美好,未来肯定会更加适应互联网的发展需求:
1. 所有面向对象的应用开发;
2. 软件工程中需求分析、系统设计、开发实现和维护;
3. 中小型多媒体系统设计与实现;
4. 消息传输系统;
5. 分布计算交易管理应用(JTS/RMI/CORBA/JDBC等技术应用);
6. Internet的系统管理功能模块的设计,包括Web页面的动态设计、网站信息提供管理和交互操作设计等。
7. Intranet(企业内部网)上完全基于Java和WEB技术的应用开发;
8. WEB服务器后端与各类数据库连接管理器(队列、缓冲池);
9. 安全扫描系统(包括网络安全扫描、数据库安全扫描、用户安全扫描等);
10. 网络/应用管理系统;
11. 其它应用类型的程序。
- 五、学习建议
因为多种原因,目前我国对于Internet的研究与开发工作还是与国外尤其是美国有相对差距,但用Java语言进行开发的成功案例在各行各业还是有的,尤其是目前较为火热的电子商务网站系统。我认识一个名字叫做狮子的2货,他就是超级喜欢什么电商领域的。许多程序员或非程序员希望能够有目的、有步骤、并系统的学习Java技术,建议可以依据以下层面来学习:
1、 Java语言基础
该部分应该掌握的内容有面向对象基础、Java语言基础语法、Java规范、Java虚拟机规范、编程规范以及常用开发工具使用等。
2、 全面了解Java高级技术概貌
全面了解Java高级技术概貌其实并不一定必须学习Java语言基础,有时需要知道将来可以学习什么、做什么是最重要的。Java高级技术目前大致有AWT工具使用、Swing组件使用、JavaBeans、Java2D、Drag-and-Drop、RMI-IIOP、JavaIDL、JDBC、JNDI、 JMAIL、JTS、Servlet/Jsp等,学习的最好方法不是到书店买书看,而是到Javasoft公司和其推荐的资源网站去阅读相关技术规范和API。这方面正是我所缺失的,因为我的资料比较多,所以在我一旦遇见问题的时候,就会动不动就会翻我自己的资料,很耽误时间的。尽管我不提倡去网上直接百度或者怎样,个人觉得网上的资料良莠不齐,好多东西本身都是错的,但是官方的资料和比较权威的网站还是应该多去逛逛的。
3、 有目的地选择深入掌握工作所需或感兴趣的技术方向
通常情况下,学习Java是因为对某些方面感兴趣或者是有方面的工作需求。所以无论为了个人兴趣还是更好的完成工作,精通于某几方面的技术,其它方面兼顾即可。
关于如何学习java,真的是一言难尽,每个人都有每个人的方法。因为java的应用体现在2个方面:java2ee和android。我曾经看过一篇博客有讲到:一个技术大牛对java2ee初学者的建议,我觉得写得很好的,明天我会专门关注下他那篇博客来自己写一篇的,这里就不做多的重复了。
罗里吧嗦写了这么多内容,只是自己觉得很有必要来梳理下自己得以生存的java。关于其中的疏忽或者错误欢迎大家来留言。同时我也很欢迎大家来一起研究技术,共同进步。我记得当初我刚刚从杭电毕业的时候,那个时候每天工作很累,然后晚上还要学习到1点多,那个时候也是我收获最多的时候。现在工作了一段时间,真的是应了最早的时候一位前辈讲的话:过一段时间就会对技术失去热情。这并不是我想要的,所以青春不止,理想犹存,希望大家勿忘初心,+U。。。
linkin大话java的更多相关文章
- Linkin大话Java和internet概念
整理电脑,无意中翻到不知道哪里来的文章,觉得里面写的很好,仔细看过一遍后,整理了下贴了出来,其中的好多概念我觉得讲的很透彻. 既然Java不过另一种类型的程序设计语言,为什么还有这么多的人认为它是计算 ...
- linkin大话设计模式--单例模式
linkin大话设计模式 开文前先弱弱的问一句:什么是设计模式?我在研究java2ee的时候有研究过,在学js的时候也有看到.设计模式的概念最早源于建筑设计大师<建筑的永恒算法>一书,它表 ...
- linkin大话设计模式--常用模式总结
linkin大话设计模式--常用模式总结 一,常用设计模式定义 Abstract Factory(抽象工厂模式):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. Adapter( ...
- linkin大话设计模式--适配器模式
linkin大话设计模式--适配器模式 大家知道,在java中只允许单继承,但是在实际问题中往往都需要多继承,java引入了接口这一概念.(一个类可以实现多个接口) 由于接口中都是抽象方法,那么我们在 ...
- linkin大话设计模式--模板方法模式
linkin大话设计模式--模板方法模式 准备一个抽象类,将部分逻辑以具体方法的形式实现,然后申明一些抽象方法来迫使子类实现剩余的逻辑.不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不 ...
- linkin大话设计模式--观察者模式
linkin大话设计模式--观察者模式 观察者模式定义了对象间的一对多依赖关系,让一个或者多个观察者观察一个对象主题.当主题对象的状态发生改变的时候,系统能通知所有的依赖于此对象的观察者对象,从而能自 ...
- linkin大话设计模式--命令模式
linkin大话设计模式--命令模式 首先考虑一种应用情况,某个方法需要完成某一个功能,这个功能的大部分功能已经确定了,但是有可能少量的步骤没法确定,必须等到执行这个方法才可以确定. 也就是说,我们写 ...
- linkin大话数据结构--Collection和Iterator
linkin大话数据结构--Collection和Iterator Java 集合就像一种容器,可以把多个对象的引用放入容器中.Java 集合类可以用于存储数量不等的多个对象,还可用于保存具有映射关系 ...
- linkin大话设计模式--建造模式
linkin大话设计模式--建造模式 建造模式是对象的创建模式,可以讲一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象. 建造模式的结构: 抽象建造者 ...
随机推荐
- easyHOOK socket send recv
代码比较简单,就不做注释了. 包含一个sockethookinject.DLL 和sockethook.exe 有一点不清楚, SetExclusiveACL可以添加当前线程的hook, 但是eas ...
- VS2017编译SFML SDK配制环境详解
SFML和Visual Studio 介绍 如果您在Visual Studio IDE(Visual C ++编译器)中使用SFML,本教程是第一个应该阅读的教程.它将解释如何配置您的SFML项目. ...
- 三十分钟学会AWK
摘要: 本文大部分内容翻译自我开始学习AWK时看到的一篇英文文章 AWK Tutorial ,觉得对AWK入门非常有帮助,所以对其进行了粗略的翻译,并对其中部分内容进行了删减或者补充,希望能为对AWK ...
- 【ASP.NET MVC系列】数据验证和注解
[01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作篇)(下) [04]浅谈ASP. ...
- MYSQL:RELPACE用法
RELPACE类似于INSERT的方法,但如果表中的旧行与主键或惟一索引的新行具有相同的值,则在插入新行之前删除旧行 为了测试方便我们首先要创建一张表 CREATE TABLE test ( id I ...
- AssertionError while merging cells with xlwt (Python)
产生这一错误的原因是,行列数字的赋值有问题,三行数字大于下行数字,左列数字大于右列数字. sheet.write_merge(top_row, bottom_row, left_column, rig ...
- 【算法】赫夫曼树(Huffman)的构建和应用(编码、译码)
参考资料 <算法(java)> — — Robert Sedgewick, Kevin Wayne <数据结构> ...
- zookeeper之分布式锁以及分布式计数器(通过curator框架实现)
有人可能会问zookeeper我知道,但是curator是什么呢? 其实curator是apachede针对zookeeper开发的一个api框架是apache的顶级项目 他与zookeeper原生a ...
- iOS 字符串 MD5
iOS 字符串 MD5 Objective-C 实现 需要引入头文件 #import <CommonCrypto/CommonCrypto.h> 这里用方法实现 + (nullable N ...
- python学习路线
目录: 硬件: 第一篇:操作系统简介 第二篇:操作系统 linux基础: 第一篇:初始Linux 第二篇:基本使用 第三篇:Linux进阶 python基础: 第一篇:python基础大纲 第二篇:变 ...