当一个技术能不能发展起来的时候关键要看三点:
- 有没有一个比较好的社区。像C、C++、Java、Python和JavaScript的生态圈都是非常丰富和火爆的。尤其是很多商业机构参与的社区那就更为人气爆棚了,比如Linux的社区。
- 有没有一个工业化的标准。像C、C++、Java都是有标准化组织的。尤其Java,其在架构上还搞出了像J2EE这样的企业级标准。
- 有没有一个或多个杀手级应用。C、C++和Java的杀手级应用不用多说了,就算是对PHP这样还不能算是一个好的编程语言来说,因为是Linux时代的第一个杀手级解决方案LAMP中的关键技术,所以也发展起来了。
上述的这三点是非常关键的,新的技术只需要占到其中的一到两点就已经很不错了,何况有的技术,比如Java,是三点全占到了。所以Java的发展是如此的好。当然,除了上面这三点重要的,还有一些其他的影响因素,比如:
- 学习曲线是否低,上手是否快。这点非常重要,C++在这点上越做越不好了。
- 有没有一个不错的提高开发效率的开发框架。如:Java的Spring框架,C++的STL等。
- 是否有一个或多个巨型的技术公司作为后盾。如Java和Linux后面的IBM、Sun......
- 有没有解决软件开发中的痛点。如:Java解决了C和C++的内存管理问题。
------摘自 陈皓《Go语言、Docker和新技术》
在极客时间App上订阅了皓哥的专栏,跟随专栏学习一年。对我影响很大。我决定由.Net开发转向Java后台,正好公司现在也用Java做项目(SpringBoot 2.0),一切都是刚刚好。那我们来聊聊Java的历史:
Java的历史要追溯到1991年,由Patrick Naughton和James Gosling(一个全能的计算机奇才)带领的Sun公司的工程师小组想要设计一种小型的计算机语言,主要像有线电视转换盒这类的消费设备。1996年年初,Sun发布了Java的第1个版本。
Java语言的发展状况
版本 |
年份 |
语言新特性 |
类与接口的数量 |
1.0 |
1996 |
语言本身 |
211 |
1.1 |
1997 |
内部类 |
477 |
1.2 |
1998 |
Strictfp修饰符 |
1524 |
1.3 |
2000 |
无 |
1840 |
1.4 |
2002 |
断言 |
2723 |
5.0 |
2004 |
泛型类、“for each”循环、可变无参数、自动装箱、元数据、枚举、静态导入 |
3279 |
6 |
2006 |
无 |
|
7 |
2011 |
基于字符串的switch、钻石操作符、二进制字面量、异常处理改进 |
4024 |
8 |
2014 |
Lambda表达式、包含默认方法的接口、流和日期/时间库 |
4240 |
9 |
2017.9 |
工作正在进行之中,使 JAVA 运行的反应流部分的 JAVA 9︰JSR 166 的领导者 Doug Lea提出了一个新的“Flow”类别,将包括目前的反应流提供的接口。这项工作被记录下︰
有些项目是要加入自动并发( automatic parallelization),采用OpenCL技术 |
|
10 |
2018.3 |
JSR 354:货币和汇率API |
|
11 |
2018.9 |
|
关于Java各个版本的介绍,在维基百科上有篇文章:Java版本歷史
这个是java官方的关于Java语言个版本的详细说明:Java SE Specifications
在开始Java程序的时候需要了解:
- JDK。Java Development Kit的缩写。这个工具包的版本1.2~版本1.4被称为 Java SDK(软件开发包、Software Development Kit).
- JRE。Java运行时环境,它包含虚拟机但不包含编译器
Java数据类型:
Java是一种强类型的语言。这就意味着必须为每一个变量声明一种类型。在java中,一共有8种基本类型(permitive type),其中有4种整型、2种浮点类型、1种用于表示Unicode编码的字符单元的字符类型char,和一种用于表示真值的boolean类型。
整型
byte 1字节 short 2字节 int 4 字节 long 8 字节
浮点类型
float 4 字节 eg:3.14F 3.14f double 8字节 3.14D
* Java中有一个能够表示任意精度的算术包,通常称为"大数值"(big number)。虽然被称为大数值,但是它并不是一种新的Java类型,而是一个Java对象