Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 2180|回复: 0

其实你应该这样学java(连载)

[复制链接]

该用户从未签到

发表于 2012-11-12 11:11:46 | 显示全部楼层 |阅读模式
内容简介  《其实你应该这样学java》共23章,通过主人公小Q的Java学习旅程,以朴实活泼的行文风格,循序渐进地介绍了Java语言的编程技术、面向对象和高级开发应用等内容。
  《其实你应该这样学Java》内容分为3个部分。第一部分讲解了Java的基本特点和运行原理,Java虚拟机和JDK+JCreator的开发环境,Java程序代码的特点,Java语言中的运算符和表达式,Java的基本数据类型,Java语句流程,如顺序语句、选择语句、循环语句、跳转语句等,数组的概念和使用。第二部分讲解了面向对象的开发原理,面向对象的特点,如抽象、封装、继承、多态等,属性控制,字符串类String和StringBuffer,Java的常用类库等。第三部分讲解了异常处理、图形界面、各种组件、事件处理机制、Applet、多线程技术、输入/输出控制、网络程序开发等内容。
  《其实你应该这样学Java》内容翔实,程序完整清晰,将知识点巧妙地融入风趣幽默的对话学习中。不仅适宜初学者使用,还可以作为大中专院校的教材及工程技术人员的自学参考书。


回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2012-11-12 11:16:03 | 显示全部楼层
初级篇:入门
第1章  阿里巴巴,Java开门!
1.1  神啊,请赐予我希望吧!
1.1.1  曙光初现
1.1.2  风景这边独好
1.2  Java发展简史
1.2.1  程序设计语言
1.2.2  Java
1.3  Java的特点
1.4  职业成长之路
1.4.1  起点
1.4.2  继续提高
1.4.3  成长路线
1.5  小结
第2章  利器:Java开发环境
2.1  一个平台:Java虚拟机
2.1.1  跨平台性
2.1.2  Java虚拟机
2.2  工欲善其事,必先利其器
2.2.1  JDK
2.2.2  JBuilder
2.2.3  Eclipse
2.2.4  JCreator
2.3  开发环境的安装
2.3.1  安装JDK
2.3.2  安装JCreator
2.3.3  简洁的界面
2.3.4  使用JCreator
2.4  小结
第3章  初露锋芒:第一个Java程序
3.1  第一个Java程序
3.2  代码分析
3.2.1  逐行分析程序
3.2.2  举一反三
3.3  Java程序中的符号
3.3.1  标点符号
3.3.2  标识符
3.3.3  关键字
3.3.4  注释
3.4  程序出错了怎么办
3.4.1  语法错误
3.4.2  逻辑错误
3.5  小结
第4章  基础:类型和运算
4.1  Java与数学
4.2  变量与常量
4.2.1  声明变量
4.2.2  声明常量
4.3  数据的类型
4.3.1  布尔型
4.3.2  整型
4.3.3  浮点型
4.3.4  字符型
4.3.5  类型转换
4.4  运算符号:只有加减乘除吗
4.4.1  算术运算符
4.4.2  赋值运算符
4.4.3  关系运算符
4.4.4  逻辑运算符
4.4.5  条件运算符
4.4.6  其他运算符
4.5  运算的表达式
4.5.1  运算符的优先级
4.5.2  表达式的实例
4.6  小结
第5章  飞流直下:顺序语句
5.1  语句结构
5.1.1  语句的流程
语句的流程
5.1.2  几种基本语句结构
5.2  输出语句
5.2.1  标准输出
5.2.2  标准输出的实现
5.3  输入语句
5.3.1  标准输入
5.3.2  其他输入方法
5.4  如何读写程序
5.4.1  如何读程序
5.4.2  如何写程序
5.5  小结
第6章  向左走,向右走:选择语句
6.1  该选那条路?
6.2  if:简单的分支选择
6.2.1  最简单的if形式
6.2.2  if - else 语句
6.2.3  if – else if – else 语句
6.3  switch:多分支语句
6.4  嵌套的条件语句
6.5  小结
第7章  重复操作的解决之道:循环语句
7.1  重复的操作可以化繁为简
7.2  while循环
7.2.1  while循环的结构
7.2.2  while的应用
7.3  do-while循环
7.3.1  do-while循环的结构
7.3.2  do-while的应用
7.4  for循环
7.4.1  for循环的结构
7.4.2  for的应用
7.4.3  三种循环的比较
7.5  循环嵌套
7.6  小结
第8章  跳出去:跳转语句
8.1  continue:少跑一圈
8.1.1  continue的直接跳转
8.1.2  带标号的continue语句
8.2  break:跳出整个循环
8.2.1  break的直接跳转
8.2.2  带标号的break语句
8.3  return语句
8.4  小结
第9章  一列整齐的队伍:数组
9.1  最基本的数组:一维数组
9.1.1  一维数组的定义
9.1.2  为数组赋值
9.1.3  数组元素的操作
9.1.4  应用它
9.2  二维数组
9.2.1  二维数组的定义及使用
9.2.2  二维数组的使用
9.3  小结
中级:面向对象
第10章  面向对象的基础知识:类
10.1  面向对象
10.1.1  什么是面向对象
10.1.2  面向对象特点之抽象
10.1.3  面向对象特点之封装
10.1.4  面向对象特点之继承
10.1.5  面向对象特点之多态
10.2  类
10.2.1        类的概念
10.2.2  类的定义
10.2.3  成员变量
10.2.4  成员方法
10.2.5  内部类
10.2.6  举一反三
10.3  对象
10.3.1  创建对象
10.3.2  使用对象
10.3.3  消息传递
10.3.4  清除对象
10.4  构造方法
10.4.1 定义
10.4.2  特性
10.5  多态之一:重载
10.5.1  重载的概念
10.5.2  构造方法的重载
10.6  包
10.6.1  包的概念
10.6.2  包的创建
10.6.3  包的使用
10.6.4  应用举例
10.7  小结
第11章  面向对象继续深入:继承
11.1  什么是继承
11.2  子类
11.2.1  子类的定义
12.2.2  子类的使用
11.2.3  子类的构造方法
11.3  继承中的多态
11.3.1  隐藏
11.3.2  重载与覆盖
11.4  抽象类
11.4.1  创建抽象类
11.4.2  抽象方法
11.4.3  实例演示
11.5  接口
11.5.1  接口的声明
11.5.2  接口之间的继承
11.5.3  接口的实现
11.6  对象的复制
11.7  对象的上转型
11.8  小结
第12章  特征:类及成员的属性
12.1  类的可访问性
12.1.1  public
12.1.2  默认访问
12.2  成员的可访问性
12.2.1  public
12.2.2  protected
12.2.3  默认
12.2.4  private
12.3  静态成员与实例成员
12.3.1  概念
12.3.2  静态变量
12.3.3  静态方法
12.3.4  静态成员和实例成员之间的引用
12.3.5  应用实例
12.4  终结者:final
12.4.1  final类
12.4.2  final成员
12.5  再认识几个关键字
12.5.1  void
12.5.2  this
12.5.3  null
12.6  小结
高级篇:应用
第13章  文字游戏:字符串
13.1  字符串String
13.1.1  创建
13.1.2  常用方法
13.2  StringBuffer类
13.2.1  创建
13.2.2  常用方法
13.3  小结
第14章  宝藏:类库
14.1  开启宝藏
14.2  java.lang包
14.2.1  Object类
14.2.2  Math类
14.2.3  System类
14.2.4  数据类型类
14.2.5  Cloneable 接口
14.3  java.util包
14.3.1  Arrays类
14.3.2  Date类
14.3.3  Calendar类
14.3.4  Scanner类
14.4  小结
第15章  避免意外:异常的处理
15.1  异常和异常处理
15.1.1  语法错误与逻辑错误
15.1.2  基本概念
15.2  异常类
15.3  异常处理
15.3.1  try-catch-finally
15.3.2  throws:在方法中声明抛出异常
15.3.3  throw:抛出异常
15.4  自定义异常
15.5  小结
第16章  焕然一新:框架及组件
16.1  Java图形图像概述
16.2  框架
16.2.1  JFrame类
16.2.2  显示框架
16.3  面板
16.3.1  JPanel类
16.3.2  实例应用
16.4  绘制图形
16.4.1  Graphics类
16.4.2  实例应用
16.5  绘制颜色
16.5.1  Color类
16.5.2  实例应用
16.6  绘制文字
16.6.1  显示字符
16.6.2  显示字体
16.6.3  获取字体信息:Fontmetrics类
16.7  绘制图像
16.7.1  drawImage()方法
16.7.2  ImageIcon类
16.8  小结
第17章  图形界面的元素:组件
17.1  关于组件
17.2  按钮
17.2.1  JButton类
17.2.2  成员
17.2.3  实例应用
17.3  标签
17.3.1  JLabel类
17.3.2  实例应用
17.4  文本
17.4.1  JTextField类
17.4.2  JPasswordField类
17.4.3  JTextArea类
17.5  布局
17.5.1  FlowLayout
17.5.2  GridLayout
17.5.3  BorderLayout
17.5.4  其他布局
17.6  单选及复选按钮
17.6.1  JRadioButton类
17.6.1  JCheckBox类
17.7  列表
17.7.1  JList类
17.7.2  JComboBox类
17.8  菜单
17.8.1  菜单的类
17.8.2  实例应用
17.9  工具栏
17.9.1  JToolBar类
17.9.2  实例应用
17.10  对话框
17.10.1  对话框类
17.10.2  消息对话框
17.10.3  确认对话框
17.10.4  输入对话框
17.10.5  选项对话框
17.11  小结
第18章  图形界面的帮手:事件处理
18.1  事件处理模型
18.1.1  委托事件处理模型
18.1.2  事件
18.1.3  事件监听器
18.1.4  事件适配器
18.2  动作事件处理
18.2.1  动作事件
18.2.2  动作事件监听器
18.2.3  实例应用
18.3  窗口事件处理
18.3.1  窗口事件
18.3.2  窗口事件监听器接口
18.3.3  窗口事件适配器
18.4  鼠标事件处理
18.4.1  鼠标事件
18.2.2  鼠标事件监听器
18.3.3  鼠标事件适配器
18.2.3  实例应用
18.5  键盘事件处理
18.4.1  键盘事件
18.2.2  键盘事件监听器及键盘事件适配器
18.2.3  实例应用
18.6  其他事件处理
18.6.1  组件事件处理
18.6.2  容器事件处理
18.6.3  焦点事件处理
18.6.4  选择事件处理
18.6.5  文本框事件处理
18.7  小结
第19章 小程序:Applet
19.1  Applet原理
19.1.1  Applet类
19.1.2  Applet类中的方法
19.1.3  生命周期
19.1.4  安全性
19.5  第一个Applet程序
19.2  在HTML中嵌入Applet
19.2.1  演示程序
19.2.2  HTML简介
19.2.3  向Applet传递消息
19.3  多媒体应用
19.3.1  绘制图形
19.3.2  绘制图像
19.3.3  事件处理
19.3.4  播放音乐
19.4  小结
第20章  分身有术:多线程
20.1  线程的概念
20.2  线程的生命周期
20.3  线程的创建
20.3.1  Thread类
20.3.2  Thread类中的方法
20.3.3  线程的实现
20.3.4  Runnable接口
20.3.5  多线程的应用
20.4  线程的调度与优先级
20.5  线程的互斥
20.5.1  一个线程冲突的例子
20.5.2  线程互斥
20.6  线程的同步
20.6.1  同步的实现方法
20.6.2  同步实例
20.7  小结
第21章  掌控硬盘:输入输出
21.1  认识输入输出流
21.1.1  流的概念
21.1.2  字节流与字符流
21.2  文件
21.2.1  File类
21.2.2  File类中的方法
21.2.3  文件使用实例
21.2.4  目录的管理
21.3  字符流与文件的输入输出
21.3.1  字符流
21.3.2  FileReader类
21.3.3  读入文件中的信息
21.3.4  FileWriter类
21.3.5  写入信息到文件中
21.4  字节流与文件的输入输出
21.4.1  字节输入流:InputStream类
21.4.2  字节输出流:OutputStream类
21.4.3  文件字节输入输出流
21.4.4  标准输入输出流
21.5  文件的随机读写
21.5.1  RandomAccessFile类
21.5.2  主要方法
21.5.3  实例应用
21.6  小结
第22章  网络神功:通信
22.1  网络初探
22.1.1  TCP/IP协议
22.1.2  IP地址与端口
22.1.3  网络开发模式
22.2  URL访问网络
22.2.1  URL
22.2.2  URL类
22.2.3  访问网络
22.3  Socket传递消息
22.3.1  Socket类
22.3.2  ServerSocket类
22.3.3  创建通信服务
22.4  UDP传递消息
22.4.1  UDP通信原理
22.4.2  DatagramSocket类
22.4.3  DatagramPacket类
22.4.4  创建UDP通信
22.5  小结
第23章  后记
23.1  回首
23.2  展望
附录
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2012-11-12 11:17:46 | 显示全部楼层
第1章  阿里巴巴,Java开门!

天亮了——
Q醒了,但小Q脑海中仍如同在梦中一般迷茫。
Q是一名普通的学生。每天按时上课,也按时吃饭睡觉。上课听得东西不少,可下课后记住的不多。老师布置的任务想想办法或者“参考参考”也能完成。成绩算不得好,没拿过奖学金;但也算不得差,至少没不及格过。自己的专业已经学了一段时间了,不知道这个专业毕业后能干什么用,也谈不上非常喜欢。只因当时升学时凑合选报了一个方向,竟然录取了,然后就来报道上学了。
在学校里几年,也谈不上锻炼了什么组织能力啊,领导能力啊之类的。什么都是一般般。对计算机懂得多一点,也喜欢摆弄计算机,但因为不是计算机专业,所以计算机的专业课学的不多。总之,小Q就是学校里极其普通的一个学生。
但是,最近小Q心中莫名的烦闷越来越明显了。想出去玩玩,感觉玩不痛快了;想坐下看书,但又静不下心,不知从何看起。简直不知道自己该做什么了。
为什么?可能是因为听到从学长那里传来的消息吧!
今年这个专业又不好找工作!自己学的专业无业可就。招聘会上人满为患,学这个专业的人太多,而岗位又太少,所以竞争太大了。好不容易有个专业适合的,招聘单位又要求工作经验,没有;要求学历,没有;要求XX证书,也没有。学了那么久,但自己能拿得出手的东西在人家面前好像根本不值一提似的!
即使找到工作的也跟学的专业没太大联系。眼看着很多学习优秀的学长,毕业即转行,心不甘情不愿的,不是白费了几年的学习嘛!而且待遇也普遍不高,辛辛苦苦上学那么多年,毕业了一两年也只能勉强温饱吧。
还不知道过几年自己毕业后的情况呢!那我学这个专业还有什么用?一想起这个,心里就烦死了,不知道该做什么了。
迷茫而又无助的人啊!
亲爱的朋友,你也有这种困境吗?
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2012-11-12 11:18:04 | 显示全部楼层
1.1  神啊,请赐予我希望吧!
日子一天天过去,小Q的恐慌一天天增加。最难过的事情莫过于此。
小Q想使劲但又不知该往哪儿使。为此吃不好,睡不好。身体消瘦了很多。所谓“不在沉沦中爆发,就在沉沦中灭亡”。小Q可不想“在沉沦中灭亡”,但又不知怎么办好。小Q郁闷之极,只得向天呼喊:神啊,请赐予我希望吧!
就在小Q为将来而担心的同时,他不知道,在这个世界里,还有另一番景象:某个公司为招到急需的软件开发工程师而绞尽脑汁;某个经理为找到合格的软件开发人才而辛苦奔波;某个业务因为Java开发人手不够而不得不延期;……
这是在同一个世界里发生的真实的事情。
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2012-11-12 11:21:20 | 显示全部楼层
1.1.1  曙光初现
新的学期开始了。听说有个很牛的老师派来给小Q他们上计算机课。
听说这个老师不同一般:曾经是著名的XX公司首席架构师;曾经用自己写的软件跟黑客过招,迄今无人能敌;曾经写了一个经典的手机程序,用户数十万;曾经……总之一句话,据说此人是个很厉害的“牛人”。
为了一睹“牛人”风采,小Q早早到了教室。
这时,进来一位微笑着的年青人。一只胳膊上搭着西服,一手提着笔记本包。只见他三十岁左右,整洁清新。五官端正,国字脸浓眉毛,鼻梁上一副大眼镜,更显眼睛是炯炯有神呐。头发浓密乌黑,梳向一边,没有丝毫杂乱。身材挺拔,健壮有力。穿着衬衣西裤,干净利落,更显出精神抖擞。走起路来健步如飞而又不失稳重。
“大家好!我是这学期给你上计算机课程的A博士!很高兴见到大家!”
“哇!这么帅气!”
接下来,A博士侃侃而谈,既有成熟自信,又不乏幽默。
A博士继续说着:“我们从今天开始要学习Java程序设计及应用了。Java是一个优美的语言,是一个灵活而强大的工具。Java课程不仅对计算机专业有极大用处,而且在其它任何专业领域都有良好应用,例如服务器、个人电脑、移动互联网、游戏开发、智能手机等地方都有它的身影。Java简单易用,易学易懂。现在,即使不是计算机专业的学生,甚至是高中生,都在使用Java呢!”
小Q:“我们身边哪里用得到Java呢?”
A博士:“就Java的应用,我举几个例子吧。从大的应用来说,美国在2003年发射过一个“勇气号”火星探测器,如图1.1所示,成功登陆火星。登陆之后的操作都是依赖于Java开发的系统软件;从小的应用来说,你看你们的手机,是不是也都说支持Java呢?这可是手机高性能的一个标志,如图1.2和图1.3所示。所以,Java是一门非常有用的语言,不管你们是什么专业,你们都能学好它,也应该学会它。”

        图1.1  USA-2004-勇气号火星车

Java是原Sun Microsystems公司创造的,后来经由无数人完善而成。随着它的应用越来越广,现在Java已经无处不在了!”
只见A博士讲起Java来思路清晰,滔滔不绝。小Q听得入迷,竟然不知道下课的铃声响了。这可是头一次!
“真想自己能像这个老师一样!”小Q心想。
“如果你们想了解更多关于Java的事情,想更快学好它,课下可以来找我。”
小Q记住了这句话。
小Q真的想学的更好一点,头一次对一门计算机课程这么感兴趣。隐隐约约感觉自己的困惑有答案了。下课后,小Q鼓足勇气,走进A博士的办公室。
“A博士,你好!我是您的学生小Q。”
“哦!请坐下吧。有什么事情吗?”
“我想了解Java更多点,所以来向您请教。”
“呵呵,那好啊!”

图1.4  利用Java开发的World Wind
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2012-11-12 11:23:24 | 显示全部楼层
1.1.2  风景这边独好
闲话不表。小Q开门见山:“A博士,听了您的课,我对Java有点感兴趣。一直以来我都愿意多学学计算机,我觉得它很奇妙。”
A博士:“你有这好奇心很好!很多人都是因为有好奇心才愿意钻研深入,才能学出点成绩的。对于计算机,对于Java,你有哪里想多了解的吗?”
小Q:“计算机是怎样运行的?我一直搞不懂。想请教一下您。”
A博士:“哦!这个嘛,我给你画一张简单的图模拟一下吧!”
A博士:“看这张图,如图1.5所示。计算机可以帮人们解决问题,但需要人类指出路线和方法。人的计算能力有限,很多事情都算得太慢或者根本无法计算,所以由计算机代替。人们先提出可行的方法;然后由程序员写成计算机能懂的语言,这好像是翻译,就和由汉语翻译成英语类似吧;之后由计算机自己再编译成二进制代码在CPU中运算,所得结果再转换为人们能识别的字符显示出来。”

    图1.5  计算机运行原理
小Q:“哦,我明白一点了。”
A博士:“这其中最关键的一步是程序员写出程序:将人类的语言翻译成人类和计算机都能懂的语言,我们所学的课程就是为了实现它。”
但小Q还有其他疑问,所以接着说:“我不是计算机专业的,学了Java能有用吗?”
A博士:“这个问题很好。虽说你们不是计算机专业,但学好Java也很有用,如图1.6所示。计算机的工程化思维有助于你开阔思路,提高综合素质。
如果你毕业后还是从事你原来的专业,那你可以将计算机和你原专业结合,参与行业的信息化改造。现在网络化、信息化大潮日益兴盛,但人才的缺乏也是有目共睹,这是一个大有可为的领域。现在就我所知道有会计电算化、电子商务、图像制作等,都是计算机和相关专业结合的范例。你的专业技术能力和计算机操作能力都很强,自然找工作时公司抢着要。

图1.6  学好Java的用处
如果你对原来的专业不是很有兴趣了,可以改行学计算机啊!软件开发这一行业现在缺人太多了!现在很多公司是想尽办法在招人,你们找不到工作头痛,他们找不到人才更头痛!现在软件外包和创新都越来越多,这方面人才就更显少了。国外更缺,现在国内很多人都直接出国做技术开发了。不用担心竞争大。每年毕业的计算机专业学生很多,但真正从事软件开发的还是少。更多的从事了硬件开发、图像制作、多媒体等领域,所以软件开发公司求才若渴。”
小Q:“那我能学好Java吗?”
A博士:“当然能啊。软件开发没有你想象的那么高深莫测,那么高门槛。恰恰相反,入门很容易。你可知道,很多计算机高手可都不是科班出身的!甚至有很多高中生都已经是软件开发高手。只要你正常学习,按部就班地用不了多久就能入手了。我知道很多同学对计算机有兴趣,只要稍加引导,学好它是很容易的事情。”
小Q:“那我该怎么学习呢?”
A博士:“多学,多看,多练。首先得打下理论基础,然后自己多实践。
要学Java,就要多看看书,理解Java的基本操作,以及各个命令的含义。因为Java不是一门理论,而是一门技术,所以实践必不可少。即使是基本理论,也得靠平时多练习才能深刻体会,熟练掌握。如过不能随时练习,就不能真正理解它的含义,也就不能灵活运用了。有一些好的网站和书籍,你可以参考一下。这也是提升自己能力的途径。
学习时注意循序渐进,切莫急躁冒进。一步一步踏踏实实走下去,几个月就能相对熟练了。”
小Q:“我听说还有几门软件开发语言,比如VF、C语言、VB、C++等,跟Java比哪个好些,我不知道该怎么选择。”
A博士:“当然是Java好些啊。现在中国的软件开发人员中,大部分是使用Java工具开发。有一个统计数字,说现在外面Java工程师的需求达到全部开发人员需求量的近七成。同时,Java工程师的待遇相对较高。一般具有3年开发经验的Java工程师,年薪十万也是很正常的。特别是现在推崇网络化、跨平台性,Java就更具备显著优势和广阔发展前景了。”
小Q:“哦!我知道了。我选择Java!”
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2012-11-12 11:24:37 | 显示全部楼层
1.2  Java发展简史
小Q:“Java这么厉害,一定是当初设计它时就非常棒的吧?”
A博士:“不,Java不是一蹴而就形成现在这个样子的,它经历了不断的演化完善。我现在就给你讲一讲Java的历史吧。”
1.2.1  程序设计语言
程序设计语言自计算机出现以来就一直伴随着它的成长。从最开始的机器语言、汇编语言,到现在经常用到的高级语言,经历了几个时代的发展。
1.机器语言
当上世纪四十年代计算机最初出现时,人们将之视为一个巨大的计算机器,如图1.7所示。这时计算机的功能不是很强,指令系统也比较简单。所有操作都是由人工输入一系列的二进制代码即“0、1”串控制计算机的读写和操作,然后输出一系列的二进制代码。各种操作也基本围绕着计算而运行。这种通过二进制代码与计算机交互的时代被称为是机器语言时代。

图1.7  第一台电脑中复杂的连线
2.汇编语言
上世纪五十年代以后,随着计算机的发展,计算机的操作和指令越来越复杂。使用二进制代码既难记又容易出错,制约了计算机的发展。这时人们发明了汇编语言。汇编语言是一些操作的助记符,使用人们能理解的语言(比如英语单词等)输入操作命令,计算机转换为二进制代码后运行。这样就大大提高了计算机的性能,扩展了它的使用领域。
3.面向过程的高级语言
汇编语言仍比较难以理解,只有专家才能熟练操作。软件的开发跟不上硬件的高速发展,以致造成了“软件危机”。为此,上世纪五六十年代起,计算机的先驱者曾经开发出了很多语言和工程化开发的思想,例如面向过程的Pascal语言、BASIC语言、C语言等,促进了计算机及软件行业的发展。这些语言能够以易读易记的方式表示命令和操作,使得更多的人能够参与到软件开发行业中来。软件开发行业自此也取得了突飞猛进的发展。
4.面向对象的高级语言
但随着信息化、网络化时代的到来,这些语言也表现出了很多不足:
(1)不能跨平台使用。也就是在不同的软硬件系统下,所编写的程序不能通用。随着计算机的发展,软硬件体系越来越多,硬件有SPARK体系、Intel体系等,软件有Windows系统、UNIX系统等。程序在一个系统内完成,不能运行在另一个系统当中,造成了极大的局限性。
(2)不能适应网络化的需要。传统的开发语言,在Internet应用、分布式计算、网络编程接口等方面不能很好的适应。
(3)不能面向对象。传统的开发语言不能以面向对象的角度看待问题和分析问题,也就不能以面向对象的方式去解决问题。
所有这些,促使了新一代面向对象的开发语言——Java的诞生。
面向对象思想包含OOA(面向对象分析)、OOD(面向对象设计)、OOP(面向对象编程)等几个主要方面。它以客观世界为对象,采用和人们看待世界一样的思维方式理解分析,解决问题。所以解决了面向过程的诸多不足,终于成为最主流的软件开发方法。
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2012-11-12 11:27:07 | 显示全部楼层
1.2.2  Java
1991年,Sun Microsystems公司启动了一个名为Green的项目小组。该小组主要为数字机顶盒和其他家用电器进行控制而做研究,最终目的是让电视机、电冰箱等都能互联互通,智能管理。该小组的领导人是现在大名鼎鼎的James Gosling(被称为是“Java之父”,如图1.8所示),一位非常优秀的程序员。

图1.8  James Gosling
接到任务后,James Gosling感觉已有的编程语言比如C、C++等不能满足需要,既不能做到与平台无关,也太复杂难用。所以他在1991年6月开发了一种全新的语言,命名为Oak(橡树)。这种语言精巧灵活,适合多线程和跨平台,是Java语言的鼻祖。
这个项目小组本是为智能家电而做研究,但后来Sun公司发现智能家电市场不很理想,因此准备将Oak束之高阁。
可是山穷水复疑无路,柳暗花明又一村。九十年代以来,网络化影响越来越深入。研究人员发现Oak在面向对象、网络编程、多线程等方面有天生的优势,立即将重新改造,应用于跨平台性程序设计中,取得了成功。
因为Oak已经被其他公司注册使用,所以必须改个名字。在一次讨论时,大家望着手中的爪哇(Java)咖啡,欣喜异常,一致同意将这一语言重新命名为Java。现在这一语言,已经像爪哇(Java)咖啡一样,香飘世界各地了。Java的标识如图1.9所示。

图1.9  Java图标
Java自从出现至今,已经经历了许多版本。每一版本都是一次提升,Java正以其不断地完善,才拥有更加精彩的发展前途。
1995年5月,Java正式诞生。
1996年1月,Sun公司发布了Java 1.0。各大公司(如IBM、Microsoft等)都开始在Java平台做开发,新产品不断问世。
1997年2月,JDK1.1发布。
1997年11月,国际标准化组织正式批准了Java标准,Java成为一个开放式的产品
1998年12月,Sun公司发布Java2平台。该平台更加完善,支持多种新技术,并将一次编写、到处运行的跨平台性能扩展到服务器领域。
1999年6月,Sun公司发布Java2的三个版本:标准开发平台(J2SE)、企业开发平台(J2EE)和微型设备开发平台(J2ME)
2001年9月,Sun公司发布J2EE1.3。
2002年2月,Sun公司发布J2SE1.4。
2004年9月,Sun公司发布J2SE1.5,成为Java语言发展史上的又一里程碑。Sun公司将J2SE1.5更名为Java SE 5.0。
2005年6月, SUN公司发布Java SE 6。
2011年7月,Oracle收购Sun公司后,发布了Java 7正式版,如图1.10所示。
可以想象,未来Java仍将会不断推陈出新,有更加良好的应用前景。

       图1.10  Oracle发布Java 7
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2012-11-12 11:28:00 | 显示全部楼层
1.3  Java的特点
Java语言的最大特点是“Write once,run anywhere”。作为革命性的程序设计语言,Java还具有许多显著的优良特点。
1.简单易学
Java语言是在C++语言的基础上演化而来,吸收了C++语言的诸多优点,又避免了很多复杂难用的地方,很像是C语言和C++语言的缩减版。
在C和C++中有指针,既难以掌握又容易造成内存泄露等问题。在Java中就直接取消指针的操作了。类似的Java还取消了头文件、虚基类、操作符重载等内容,使得它更容易使用。以往的语言中内存管理也很麻烦,需要程序员手动操作;Java中则可以自动分配和回收,这样编写程序更加简单,也更清晰易懂。
2.面向对象
面向对象是现在最重要的程序设计思想之一。面向对象要求开发者将现实事物和问题抽象为对象,然后按照现实中各个对象的运作映射到计算机中。这样就更好地用计算机模拟现实世界,分析问题和解决问题。Java将数据和操作封装在类中,由类的对象进行交互。
Java作为一种纯粹的面向对象程序语言,支持抽象、封装、继承和多态。它大大提高了人们软件开发的能力。
3.跨平台
Java可以在各种软硬件设备上运行,这是传统开发语言所不具备的。
Java之所以能够跨平台运行,是因为Java开发不是在特定平台上,而是在统一的Java虚拟机上。Java程序编写完成后,生成字节码文件,可以在Java虚拟机上运行。由Java虚拟机与底层平台交互,执行相应操作。这样就屏蔽了软硬件环境,使得所有Java程序都有相同的环境,真正做到“一次开发,到处运行”。
4.解释型
Java作为解释型语言,Java的字节码文件编译为字节码文件后,可以在任何Java平台中运行。Java平台解释字节码文件为机器码执行,如图1.11所示。

5.高性能
在所有解释型语言中,Java的性能一直位居前列。无论在服务器、客户端还是嵌入式设备中,Java的性能都值得满意。
6.安全性高
在网络环境下,安全性显得非常重要。Java通过多层机制确保系统的安全。
首先,禁止使用指针,避免了非法的内存操作。
其次,虚拟机使用沙箱运行机制,提高安全性能。
还有,上网下载和使用Applet程序时,禁止读写本地文件,防止恶意程序的危害。
7.动态
Java程序可以将类动态地加载到运行环境,也可以通过网络实现。这就提高了Java的灵活性,也有利于软件的升级。
8.健壮
Java环境可以再编译时检查出更多的错误,也允许使用异常处理机制避免异常引起的故障。
9.多线程
多线程可以使得在一个程序里可以执行若干个任务,这样提高了程序的并发性。Java支持多线程的同步执行,并提供多个线程的同步机制。
10.分布式
分布式计算设计多个计算机之间的网络协同。Java提供了支持HTTP、TCP/IP等的类库,打开网络对象如同本地文件一样简便。Java的RMI机制就是分布式工作的重要手段。
正因为有如此多的特点,Java才能迅速发展的广泛接受,被称为具有开创性和革命性的新一代计算机程序设计语言。现在Java已经被广泛应用于以下众多方面:
        行业信息化建设;
        面向对象的应用开发;
        网络环境下程序的设计;
        服务器端系统的设计;
        嵌入式应用;
        电子商务;
        游戏设计;
        信息管理系统;
        计算机辅助设计和制造等。
我们相信,随着Java的继续发展,Java将出现在每一个人的身边。
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2012-11-12 11:28:12 | 显示全部楼层
1.4  职业成长之路
小Q:“毕业前该怎样成为一个合格的软件设计师,将来顺利进入工作岗位呢?”这是困扰小Q和广大同学的一个很重要的问题。
A博士:“那就听我讲来。”
1.4.1  起点
A博士慢慢谈起。
要想做Java程序员,并不需要必须是计算机专业出身。很多人不是计算机专业却也成为计算机高手;有的高中生都已经小有所成,可称得上是合格程序员了;甚至很多学校初中生都能写出漂亮的应用程序。所以,Java程序员的起点要求不高。
但这并不意味着Java程序员的待遇低。现在公司招聘Java程序员,年薪四五万基本上可算是起步价了;就是年薪一二十万也很常见。
即使对计算机不很了解也没关系,可以从现在开始学。
作为一个入门级程序员,不需要懂什么硬件原理、汇编语言等计算机课程,也不需要对软件开发方法有多高深的研究。只要能掌握Java的基本应用,能够写出一般的网络应用、管理系统等程序就基本合格了。其他知识你懂得越多越好,但如果不懂也可以在讲来工作中一步步学习。
这最基本的Java知识的应用及开发,等你跟我学完这门课就差不多了。
如果你想走这条路,我给你几个建议吧!
首先你得对计算机开发有兴趣爱好。兴趣是最好的老师嘛!
仅有兴趣还不够,还需要掌握良好的学习方法,理解理论和各知识点是基础,将基本功打扎实,才能学得更深更广。
还得在实践中学得真知。要知道Java开发可是一个技术活儿,仅有理论是不够的,一切都需要借助实践才能灵活运用。这叫理论和实践相结合吧。
网络时代一切日新月异,在生活和工作中应当不断充电,以适应社会的发展。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2024-5-15 11:25 , Processed in 0.430273 second(s), 48 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表