# jdk生态
时间 | 版本 | 特性 | 描述 |
---|---|---|---|
1990年末 | 萌芽 | 为下一代智能家电编写通用控制系统(嵌入式) 最初考虑使用c++,但是它太复杂,缺少垃圾回收,可移植性,分布式和多线程等功能 试图对c++进行改造扩展,之后放弃,决定创造一个新语言: Oak | Green计划 |
1992年 | 萌芽 | Green计划完成了新平台的部分功能,包括 Green操作胸痛,Oak程序涉及语言,类库等 成立 FirstPerson有限公司,它是 Sun公司的全资子公司 | 机顶盒投标失利,近乎夭折 |
1994年夏天 | 破壳 | 同年秋天,完成第一个 java语言的网页浏览器:WebRunner。 此时Oak商标被注册,因此改名为 java | java意为 爪洼,盛产咖啡 |
1995年初 | 问世 | 公布源码,免费使用 | 振聋发聩的效果 |
1996年初 | JDK1.0 | 运行环境: 核心API,集成API,用户界面API,发布技术,虚拟机 开发环境:javac程序 | 第一个稳定版 |
1997.2.18 | JDK1.1 | 增加 JIT(即时编译)编译器 | 效率有了较大提升 |
1995-1998 | 探索 | 1996年,Flash问世,在网页领域比 Applet更简单 java没有一个很好的定位,也没有找到它必须存在的理由 | 生死攸关摸索期 |
1998.12 | JDK1.2 | 发布了JSP/Servelt规范,EJB等规范 将JAVA分成 J2EE,J2SE,J2ME三个版本 将API分为三大类:核心API,可选API,特殊API | 历史上最重要的JDK版本,挽救了JAVA语言,同时也是JAVA飞速发展的时期 |
2002.2 | JDK1.4 | 有IBM,Symbian等公司参与,成为发展最快的一个版本 涌现大量开源框架如:Struts,Hibernate,Spring; 涌现大量企业应用服务器,如 webLogic,WebSphere,JBoss等 | jdk历史上最为成熟的版本 发展最快的一个版本 |
2004.10 | JDK1.5 | 更名为:JavaSE5.0,JavaEE,JavaME 增加泛型,增强for语句,可变数量的形参,注解,自动拆箱及装箱等功能 发布新的企业级平台规范,EJB3.0,JSF规范 | 万众瞩目,万众期待 |
2006.12 | JDK1.6 | 稳步发展 | 维持大约2年发布一次新版本的习惯 |
2009.4.20 | 挫折 | SUN 被 Oracle收购 2007年11月,Google推出了Android,其使用JAVA语言进行开发,这位JAVA的新主人,看来是有备而来 | 江山已改,大清已亡 |
2011.7.28 | javaSE7 | 引入二进制整数,支持字符串的switch语句,菱形语法(钻石语法),多异常捕捉,自动关闭资源的try语句 | 历时五年,王者归来 |
2014.3.18 | JavaSE8 | Lambda表达式(函数式编程),流式语句,日期库等新特性 | jdk5以来,最大的一次版本升级 |
# java关键类对象
# Object对象
public class Object {
private static native void registerNatives();
static {
registerNatives();
}
public final native Class<?> getClass();
public native int hashCode();
public boolean equals(Object obj) {
return (this == obj);
}
protected native Object clone() throws CloneNotSupportedException;
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
public final native void notify();
public final native void notifyAll();
public final native void wait(long timeout) throws InterruptedException;
protected void finalize() throws Throwable { }
}
- 本地方法:wait,notify,notifyAll,getClass,clone(子类没有实现Clonable会报错),hashCode
- toString方法:
public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }
# 获取键盘输入
Scanner scanner= new Scanner(System.in); scanner.next();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); bufferedReader.readLine();
# 注释
- 单行注释: //xxxx
- 多行注释: /* xxxx */
- 文档注释: /** xxxx */