Download presentation
Presentation is loading. Please wait.
1
Introduction to Java Programming
CS Lab of ZHKU
2
全栈工程师 (Full Stack Developer)
现代Web项目的复杂性? 最需要什么人才? 全栈工程师 (Full Stack Developer) 由于经常在各种技术穿梭,他会经常忘记代码的语法和一些API,所以他经常需要去查API甚至查语法,他觉得没有Google几乎没法工作。这在某些人的眼里,是技术不够的表现。他记的只是一个Key,一个如何找寻答案的索引,而不是全部,人脑不是电脑,他不可能能记下所有的东西。 现代项目的开发,需要掌握多种技术。互联网项目,需要用到后端开发、前端开发、界面设计、产品设计、数据库、各种移动客户端、三屏兼容、restFul API设计和OAuth等等,比较前卫的项目,还会用到Single Page Application、Web Socket、HTML5/CSS3这些技术以及像第三方开发像微信公众号微博应用等等。 Web前端也远远不是从前的切个图用个jQuery上个AJAX兼容各种浏览器那么简单了。现代的Web前端,你需要用到模块化开发、多屏兼容、MVC,各种复杂的交互与优化,甚至你需要用到Node.js来协助前端的开发。 所以说一个现代化的项目,是一个非常复杂的构成,我们需要一个人来掌控全局,他不需要是各种技术的资深专家,但他需要熟悉到各种技术。对于一个团队特别是互联网企业来说,有一个全局性思维的人非常非常重要。[1]
3
本课程的目的 不是Java语法课 培养编程思想 善于融合所学知识 大胆探索精神
4
Outline Course Introduction Java Introduction 面向对象的概念
Your First Cup of Java Your Turn Java吉祥物Duke
5
Course Introduction 课时安排 上课时间 实验及作业提交 38+18学时 第1周~第14周
广东数字大学城 gd.nclass.org(作业) 仲恺课程中心(互动和课件) Java商标
6
Course Introduction 课程适合对象 课程目的 课程进度表 对于 Java 程序设计有兴趣、有初步程序设计经验的学生
将着重于培养系统设计实战经验。在大量的范例中,让学生清楚了解java企业开发应用技术。期望学生能于课程结束后,具有初步的运用java web开发系统的能力。 课程进度表 依照大家接受情况做动态调整
7
Course Introduction 课程覆盖Java开发的相关技术 最终完成一个基于Java EE架构的**管理系统
程序开发、调试工具(Eclipse) 框架技术(MVC,Spring,JPA) 领域知识分析(用例分析,设计模式、活动图) 前沿技术(Maven/GitHub、集群、Hadoop…) 最终完成一个基于Java EE架构的**管理系统
8
Course Introduction 参考书目 The Java Tutorials 在线版 Sun官方网站
Java 2 程序设计实用教程(第二版)叶核亚 Thinking in Java, 3rd Edition 电子版
9
Course Introduction 平时成绩评定(50%) 实验评分标准(50%) Questions?
上课情况(缺旷课、课堂实例练习) Question & Teamwork 实验评分标准(50%) 完成程序基本项目且正确执行:80 分 完成进阶项目或加强功能:每项酌予加分 严禁抄袭(该次实验计零分) Questions?
10
The Origin of Java Internet约1995年兴起. 不同的计算机、硬件,跑不同的操作系统。
不同的计算机却都可以看网页。 因此需要一个新的程序语言,可以在不同的平台上执行。 Java是Sun Microsystem开发并且持续维护到2009年,现在是Oracle接手。 第一版Java公开的日期 - 5/23/1995. Java每年都持续更新,但有一次重大改版. Java 1.0 and 1.1这两个版本称Java 1。 Java 1.2, 1.3, 1.4都称Java 2。 J2SE1.5更名为J2SE5.0(加入Annotation) 发布Java SE 6。取消各版本的2。 2011年7月28日,Oracle发布Java7的正式版 2014年 Java8发布(Lambda表达式,其目的是使Java更易于为多核处理器编写代码;其次,新加入的Nashorn引擎也使得Java程序可以和JavaScript代码互操作)
11
Java Platforms Java Standard Edition (Java SE) 标准版
Core Java Technology Provide the compiling and execution environment to build the standard Java application. Java Enterprise Edition (Java EE) 企业版1.6 Provide a component-based approach to the design, development, assembly, and deployment of enterprise applications (e.g., JPA,JSP, Servlet, Java Beans). Java Micro Edition (Java ME) 迷你版 The core libraries are modified to meet the restricted requirements of embedded device.
12
Related Terms about Java
Java application 单独跑在个人计算机上的Java程序。 例如Eclipse、Borland Jbuilder本身就是用Java写的。 Java Applet 主要嵌在Web page网页中的Java程序. 基于安全性考虑,Java Applet能执行的功能会比较受限制。 Javascript(jQuery,Dojo,…) 在浏览器中执行的类似Java语法的Script程序。 Java Server Pages (JSP) 在服务器Server端所执行的Java语法的Script程序。
13
Important Features of Java (1)
Portability (可移植性) Java程序都会compile(编译)成byte code (字节码),而不是 machine-dependent code (要在特定机器才能跑的程序) Java byte code执行时通过各机器上的 Java Virtual Machine (JVM) 来解析执行. Java Applications JVM JVM Windows Linux Various Hardware Various Hardware
14
Important Features of Java (2)
Garbage Collection (自动回收垃圾内存) You don’t need to address the problems of memory allocation and de-allocation. (每个对象生命周期过了,自然成为可被回收的对象) The garbage collector in JVM is responsible for managing the memory usage. Well-organized language structure The core Java library is implemented based on the object-oriented design. (面向对象的设计核心) Some Java-specific features (e.g., interface) increase the reusability of your program. (对象可以多重继承接口)
15
Important Features of Java (3)
Advanced built-in data structures and classes. Vector, Hashtable, …, etc. (方便储存搜索大量数据) Union and find for set operations. (方便集合数据运算) Object serialization. (方便对象传输) Support of multi-thread programming and exception handling (多任务执行与例外处理) Java provides synchronized block for managing multi-thread execution The programmers are forced to handle exception (e.g., I/O error) in the Java language
16
Important Features of Java (4)
动态加载(Dynamic Loading) 其它语言 Java 语言 程序开始执行后所有对象就一起加载。 一旦开始执行,就无法做出任何变更。 当需要某个对象时,才将该对象加载。 这种特质,让动态抽换对象变得可能。
17
Important Features of Java (5)
何谓多任务 (Multi-tasking) 例如,编写网络程序,仿真程序。 Java 利用 “线程” (Thread) 来实现多任务 可将一个程序分成数份, 让各部份能同时被执行。
18
Important Features of Java (6)
安全性 Bytecode 的验证 Java编译器是借助生成与计算机架构无关的 Bytecode 指令,以达到上述功能。 它们能轻易地在任何机器上解译,并且动态地转换成合适的机器码。 名称防护 只要有一个名称在加载时发生和别处一样的冲突,Class Loader 将会加载本地端的版本,而拒绝加载远程的版本 文件存取的限制 浏览器不会让Applet读取不被用户允许的文件系统 。 不使用指针 Java与C/C++之间最大的不同点之一在于Java不用指针 (Pointer),能排除发生内存被覆盖 (Overwriting Memory)和毁损数据 (Corrupting Data)之可能性
19
Important Features of Java (7)
安全性 在 Java 中执行一个程序需经历层层把关,而且活动范围还会被局限在特定空间。 很好!一切正常!但只准你在特定范围活动。 别乱跑,我带你到正确的内存位置。 有被篡改过吗? Java 位码 (Byte Code)
20
A System Implemented in Java
21
Programming Tools You can write a Java SE application with a text editor and the Java Software Development Kit (JDK) JDK provides the compiling and executing environment. Latest version: Java SE 6 in 提供Java开发的环境 Java Runtime Environment (JRE) provides only the executing environment 只提供Java执行的环境
22
Java Standard Edition 6 Platform
23
面向对象概念 面向过程模型(Procedural Paradigm) 面向对象模型(Object Orientated Paradigm)
一般计算机仅能了解一些很简单的命令,为了让计算机能够了解整个复杂的任务,则会将大的任务分割为更小的任务,一直至能够让机器所了解和处理的部份,这就是面向过程的程序设计方法。 面向对象模型(Object Orientated Paradigm) 面向对象方法是分析问题和解决问题的方法,其依照人类真实的方法和思维来分析和解决问题 。这样使得对象与真实世界有一个很直接的关系,不需要做任何的转换,更易于对现实系统建模。
24
面向对象概念 What is Object? 抽象化(Abstraction) 铅笔与钢笔 类似的对象、相同的行为(Methods)
不同的属性(钢笔:墨水、铅笔:铅原料) 抽象化(Abstraction) 组装脚踏车时不必被零件的复杂度所困扰 可以忽略齿轮、变量器或刹车系统的运作细节 只需将各个对象自由运用
25
面向对象的概念 Java 是一种纯面向对象的程序语言 What is Object-Oriented? 制作脚踏车 制作脚踏车
非面向对象的方法 制作脚踏车 取出橡胶,利用圆形模板制作轮胎 将钢铁融化后,制作齿距不等的齿轮 用橡胶制做手握把,连接上刹车线制作刹车器 切割泡棉,加上橡皮制作椅垫 … 完成一台脚踏车 面向对象的方法 制作脚踏车 轮胎 数量:2 个 处理:切割出具有抓地力的胎纹 齿轮 数量:1 大, 2 小 处理:调整成具有 12 段变速的齿轮系统 刹车器 数量:1 个 处理:调整成具有碟刹功用 轮胎处理好、齿轮处理好、刹车器处理好, 将各个对象组装好,即可完成一台脚踏车。
26
(这些数量及行为叫做 “属性”与“方法”) 来描述整件事情是如何发生的。 (这部份的描述称为“主程序”)
面向对象概念 什么是面向对象? 先定义好参与这件事的物品有哪些 (这些物品叫做 “对象”) 制作脚踏车 轮胎 数量:2 个 处理:切割出具有抓地力的胎纹 齿轮 数量:1 大, 2 小 处理:调整成具有 12 段变量齿轮系统 刹车器 数量:1 个 处理:调整成具有碟刹功用 轮胎处理好、齿轮处理好、刹车器处理好, 将各个对象组装好,即可完成一台脚踏车。 再定义这些物品所需的数量及行为 (这些数量及行为叫做 “属性”与“方法”) 接下来就可用物品间的互动行为 来描述整件事情是如何发生的。 (这部份的描述称为“主程序”)
27
面向对象概念 Java 使用 “类” (Class) 来刻画对象的行为和属性 主程序对象 适合用于大型软件开发与分工
可撰写出较易让人懂的程序与文件 轮胎对象 主程序对象 class 轮胎 { 数量 = 1 个 处理法 { … } } class 脚踏车 { 轮胎处理好 齿轮处理好 刹车器处理好 在主机身上锁上轮胎、 齿轮和刹车器即可 } 齿轮对象 class 齿轮 { 数量 = 1大, 2小 处理法 { … } } 刹车器对象 class 刹车器 { 数量 = 1 组 处理法 { … } }
28
面向对象概念 例子:脚踏车对象
29
面向对象概念
30
How to Learn A Programming Language as Quickly as Possible
学习如何 声明变量(variables)与数组(arrays) 学习如何 写条件判断(if-then-else) 学习如何 写循环(loops) 学习有多少内建的方法(existing functions)可以派上用场 学习如何 找到写错的地方(debug) 学习如何 有效地提问!(First step of troubleshooting)
31
Your First Cup of Java A Checklist Steps
The Java SDK, Standard Edition, 下载 可以视开发团队需要下载不同版本JDK 本课程以使用Java SE 6 为例 A text editor: BlueJ,UltraEdit, Vim,notepad,… Steps Create a source file (源文件) Compile (编译) the source file into a bytecode file Run (执行) the program contained in the bytecode file
32
JVM interprets the byte code into machine-dependent code
开发,编译,执行Java示意图 程序代码 Java Applications 文件名.java Compiler Java byte code 文件名.class JVM interprets the byte code into machine-dependent code JVM
33
Create a Source File 用一般文字编辑器 程序进入点 存档成 HelloWorldApp.java 注释 主类 /**
* The HelloWorldApp Class implements an application that * displays “Hello World!” to the standard output. */ public class HelloWorldApp { public static void main ( String[] args ) { //Display “Hello World!” System.out.println("Hello World!"); } 注释 主类 程序进入点
34
Compile the source file into a bytecode file
开始菜单 执行,打入 “cmd” 进入 Command Prompt 模式 选择进入程序所在的数据夹
35
Compile the source file into a bytecode file
编译程序 javac HelloWorldApp.java 会产生一个叫做 HelloWorldApp.class 的 bytecode file
36
Run the Program 在相同数据夹下,输入下面指令 java HelloWorldApp
37
Error Explanations 指令找不到或是 Class 找不到 右键点【我的电脑】→【属性】 → 【高级】 → 【环境变量】
path 环境变量: C:\Program Files (x86)\Java\jdk1.6.0_02\bin (视正式安装目录而定 如 D:\j2sdk1.4.2_08\bin) classpath 环境变量: .;D:\j2sdk1.4.2_08\jre\lib\ext\abc.jar (外挂 Library) 只有打一点表示目前目录; 目录档案全名表示参考到的class放在哪里
38
A Closer Look at HelloWorldApp
程序注释 给程序设计师看的,compiler会跳过注释的部分,所以注释部分不会被执行。 Java 语言支持三种不同的程序注释方式 /* text */ 多行注释 /** documentation */ 可利用 javadoc 工具将 /** */ 之间的文字抽出,直接作成说明文件 // 文字 单行注释
39
A Closer Look at HelloWorldApp
Defining a Class 蓝色粗体字部份即为主类 (Class)。 Java 程序至少要有一个类,才能顺利执行。 主类名称习惯上与文件名相同。 (若为 public ,则必须相同) /** * The HelloWorldApp class implements an application that * Displays “Hello World!” to the standard output */ public class HelloWorldApp { public static void main ( String[] args ) { System.out.println(“Hello World!”); // Print the string } 主类
40
A Closer Look at HelloWorldApp
程序进入点 蓝色粗体字部份即为进入点,为一个程序开始执行的地方。 Java 的进入点名称为 “main()” 函数 /** * The HelloWorldApp class implements an application that * displays “Hello World!” to the standard output */ public class HelloWorldApp { public static void main ( String[] args ) { System.out.println(“Hello World!”); // Print the string } 进入点
41
A Closer Look at HelloWorldApp
public static void main (String[] args) { 程序代码写在此处 } main: 进入点的函数名称。一定要取名为 “main” (String[] args): 传递给 main 的参数。所有的宣告与名称一定要如此写。 void: main 的传回值。void 代表不传回任何值。 static: 宣告 main 是一个静态函数。可以让整个 HelloWorld class 使用,而非只有 HelloWorld 的对象可以呼叫。 public: 允许任何 class 呼叫这个 main method {}: 将您想执行的程序填在此处。注意!! Java 每行程序后方都要以分号 “;” 分开。
42
A Closer Look at HelloWorldApp
在屏幕上印字 System.out.println System 类别 out 变量 println 方法 System: java 提供的一个类,其中定义了所有与标准输出入的相关动作。 out: System 类别中的一个变量。其类型为 PrintStream 类别 println: PrintStream 类内的一个方法,由于 out 变量本身指向一个 PrintStream 对象,所以我们得以通过 out 调用 println 方法。 范例:System.out.println(“We are”+ “studying”+ “Java!!”);
43
程序编写习惯和规范 程序叙述 程序区块 程序代码的缩排 ; 程序叙述结束符号 以 {} 符号包围 习惯先括好后,再继续往下写
; 程序叙述结束符号 程序区块 以 {} 符号包围 习惯先括好后,再继续往下写 程序代码的缩排 善用 Tab 键 方便找出错误
44
Your Turn 写一个 Java 程序在屏幕上显示右列图形: Practice
Set up your programming environment. Write a program showing the following messages 1st line: Your Student Number, eg. JS2001 2nd line: Your Name, eg. 王大明 3rd line: “Hello everyone!” 写一个 Java 程序在屏幕上显示右列图形: 试着使用 System.out.print() 加上换行字符 ***** **
Similar presentations