Java高级程序设计

概述

先谈三点

  • 什么是Java
  • 为什么学Java
  • 怎么学Java

Java

Java是一种广泛使用的计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。

一般公认为詹姆斯·高斯林(英语:James Gosling,1955年5月19日-,加拿大软件专家)为“Java之父”

-- https://zh.wikipedia.org/wiki/Java

历史

任职于Sun微系统的詹姆斯·高斯林等人于1990年代初开发新型语言Oak,目标设置在家用电器等小型系统的编程语言,应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信,后该项目被放弃。

随着1990年代互联网的发展,Sun公司看见Oak在互联网上应用的前景,于1995年5月以Java的名称正式发布。

Java特性

Java编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。

Java不同于一般的编译语言或解释型语言。它首先将源代码编译成字节码,再依赖各种不同平台上的虚拟机来解释执行字节码,具有“一次编写,到处运行”跨平台特性。

Java与Internet

1995年发布HotSpot浏览器。

支持运行Java Applet。

同时得到Netscape浏览器支持。

Applet

相当于现在的微信小程序

import java.applet.Applet;
import java.awt.*;
public class HelloWorld extends Applet {
    g.drawString("Hello, world!", 20,10);
  }
}
<HTML><BODY>
<P>My first Java applet says: 
<APPLET code="HelloWorld.class" WIDTH="200" HEIGHT="40">
</APPLET></P>
</BODY></HTML>

之后

在流行几年之后,Java在浏览器中的地位被逐步侵蚀。

但在万维网的服务器端和手持设备上,Java变得更加流行。

很多网站在后端使用JSP和其他的Java技术。

为什么要学Java

找工作
缺学分
交朋友
...

Java应用广泛

  • Java可以写桌面、可以写Android、可以写服务端、可以写企业级业务、可以写互联网业务...
  • Java是在开发效率、开发门槛、性能、跨平台这几方面平衡较(或最)好的语言
  • Java是一个门槛低但上限也很高的语言

Java Editions

  • Java Standard Edition (J2SE), to develop client-side standalone applications or applets
  • Java Enterprise Edition (J2EE), to develop server-side applications such as Java servlets and Java ServerPages
  • Java Micro Edition (J2ME), to develop applications for mobile devices such as cell phones

https://madnight.github.io/githut/#/pull_requests/2022/1

本课程去年考试情况(平均77)

    分数段       人数     比例  
100-90 12 20%
89-80 30 50%
79-70 10 16%
69-60 4 7%
59-0 5 8%

不放水,不为难,且逐步优化

考试参考资料

去年试卷

课程作业

日常作业:葫芦娃系列
大作业:葫芦娃大战妖精

交朋友

  • 交流
  • 签到
  • 答疑
  • 民调
  • 考试
  • ...

前导课程要求

  • 至少一门高级程序设计语言
  • 如果C++学得很好,特别是面向对象编程思想领悟到位,建议不选
  • 不接受免修不免考

后续课程

  • 软件工程综合实验
  • 大数据及大数据综合实验
  • 软件体系结构
  • 设计模式
  • 等等

教材/参考书

《On Java 8》 by Bruce Eckel

https://github.com/LingCoder/OnJava8

教材/参考书

《Thinking in Java》(第四版)

讲课的目的是对书本内容进行提要,听课并不能够替代你自己读书的过程。

大纲 -I

  1. 语言基础 (基本类型, 运算符, 控制流)
  2. 面向对象I (抽象、类、接口、封装、继承、多态等)
  3. 面向对象II (初始化与清理、访问权限、内部类等)
  4. 类加载和自省
  5. 泛型

大纲 -II

  1. 异常处理
  2. Lambda表达式
  3. 并发编程
  4. 注解
  5. 测试

大纲 -III

  1. 自动构建
  2. 输入输出
  3. 网络通信
  4. 集合与流
  5. 设计模式
  6. Awesome Java

Hello World

Hello, World是指在电脑屏幕显示“Hello, World!”(你好,世界!)字符串的计算机程序。相关的程序通常都是每种电脑编程语言最基本、最简单的程序,也会用作示范一个编程语言如何运作[1]。同时它亦可以用来确认一个编程语言的编译器、程序开发环境及运行环境是否已经安装妥当。

Java SDK

  • JDK 1.02 (1995)
  • Java 2 SDK v 1.2 (a.k.a JDK 1.2, 1998)
  • Java 2 SDK v 1.4 (a.k.a JDK 1.4, 2002)
  • ...
  • Java 8, 9, 10, 11, 12, ... 16

Oracle JDK vs. OpenJDK

VS Code + Java Extension Pack

height:500px

Hello world

public class HelloWorld{
     public static void main(String []args){
        System.out.println("Hello World");
     }
}
$ javac HelloWorld.java
$ java -Xmx128M -Xms16M HelloWorld
Hello World

Playground

https://www.tutorialspoint.com/compile_java8_online.php

![bg right:50% fit](https://why-what-how.com/images/Why-What-How.gif)

![bg right:40%](https://upload.wikimedia.org/wikipedia/commons/thumb/1/14/James_Gosling_2008.jpg/440px-James_Gosling_2008.jpg)

![bg 80% right:30%](https://upload.wikimedia.org/wikipedia/commons/thumb/8/8b/Sun-Logo.svg/440px-Sun-Logo.svg.png)

![bg right:50% 100%](https://previews.123rf.com/images/olechowski/olechowski1311/olechowski131100054/23796130-big-data-concept-in-word-tag-cloud-on-white-background.jpg)

![bg left](https://upload.wikimedia.org/wikipedia/commons/2/21/Hello_World_Brian_Kernighan_1978.jpg)

![bg right:50%](https://s3.shunyafoundation.com/s3/1578452c3f66d8fd0d04d5d195328ae1359d8caa/jdk-jvm.png)

<iframe src="https://www.tutorialspoint.com/compile_java8_online.php" width=100% height="70%"></iframe>