学编程语言以前咱们先了解一下计算机编程语言的发展,随着计算机自己硬件发展,硬件速度越快、体积越小、成本越低,应用到人类社会的场景就会越多,那么所须要的算法就会越复杂,也就要求计算机编程语言越高级。最初重达几十吨但一秒只能运算5000次的ENIAC(世界上第一台计算机),只能作很是小的应用,好比:某些状况的弹道计算。如今任何一我的的手机运算能力均可以秒杀那个年代地球上全部计算机运算能力的总和。计算机编程语言的发展历经了从低级到高级发展。发展的核心思想就是“让人更容易编程”。越容易使用的语言,就有越多人使用;越多人使用,就有越多协做;越多协做,就能够创造越复杂的物体;计算机语言经历了三代:第一代是机器语言,第二代是汇编语言,第三代是高级语言。
【1】第一代:机器语言(至关于人类的原始阶段)
机器语言是机器指令的集合,机器指令展开来说就是一台机器能够正确执行的命令。电子计算机的机器指令是一列二进制数字。计算机将之转变为一列高低电平,以使计算机的电子器件受到驱动,从而进行运算。上面所说的计算机,指的是能够执行机器指令,进行运算的机器。这是早期计算机的概念。早期的程序设计均使用机器语言。程序员们将用 0、1 数字编程的程序代码打在纸袋或卡片上,1打孔,0不打孔,再将程序经过纸带机或卡片机输入计算机,从而进行运算。
应用8086CPU完成运算s=768+12288-1280,机器码以下:
假如将程序错写成如下的错误,请你找出错误:
书写和阅读机器码程序不是一件简单的工做,要记住全部抽象的二进制码。上面只是一个很是简单的小程序,就暴露出机器码的晦涩难懂和不易查错。写如此小的一个程序尚且如此,实际上一个有用的程序至少要有几十行的机器码。那么,状况将会怎么样呢?
在显示器输出“welcome to masm”,机器码以下:
看到这样的程序,你有什么感想?若是程序里有一个“1”被误写成为“0”,又如何去查找错误呢?html
【2】第二代:汇编语言(至关于人类的手工业阶段)
为了编程的方便,以及解决更加复杂的问题。程序员开始改进机器语言,使用英文缩写的助记符来表示基本的计算机操做。这些助记符构成了汇编语言的基础。以下是一些常见的汇编语言助记符(单词)好比:mov,add,sub之类,这样人更容易使用了。识别几百、几千个单词,感受要比几百几千个数字,美妙多了。汇编语言至关于人类的手工业社会,须要技术极其娴熟的工匠,可是开发效率也很是低。汇编语言虽然能编写高效率的程序,可是学习和使用都不是易事,而且很难调试。另外一个复杂的问题,汇编语言以及早期的计算机语言(Basic、Fortran等)没有考虑结构化设计原则,而是使用goto语句来做为程序流程控制的主要方法。这样作的后果是:一大堆混乱的调转语句使得程序几乎不可能被读懂。对于那个时代的程序员,能读懂上个月本身写的代码都成为一种挑战。 汇编语言仍然应用于工业电子编程领域、软件的加密解密、计算机病毒分析等。
下面以Masm软件为例,编写一个简单的“hello world!”程序。
【3】第三代:高级语言(至关于人类的工业阶段)
对于简单的任务,汇编语言能够胜任。可是随着计算机的发展,渗透到了工做生活的更多的方面,一些复杂的任务出现了,汇编语言就显得力不从心(应该说是程序员使用汇编语言解决复杂问题出现了瓶颈)。因而,出现了高级语言。像咱们熟知的C、C++、Java等等都是高级语言。
高级语言容许程序员使用接近平常英语的指令来编写程序。例以下图所示:
java
java是由SUN公司的詹姆斯·高斯林 (James Gosling)发明的,可是如今SUN公司被Oracle收购了程序员
▪ 1991年,Sun公司的Green项目,Oak正则表达式
▪ 1995年,推出Java测试版算法
▪ 1996年,JDK1.0数据库
▪ 1997年,JDK1.1编程
▪ 1998年,JDK1.2,大大改进了早期版本的缺陷,是一个革命性的版本,改名为Java2小程序
▪ 1999 Java被分红J2SE、J2EE 和J2ME,JSP/Servlet技术诞生windows
▪ 2004年,J2SE 5.0 (1.5.0) Tiger老虎.为了表示这个版本的重要性,J2SE1.5改名为J2SE5.0。安全
▪ 2006年,J2SE 6.0 (1.6.0) Mustang野马.此时,Java的各类版本被改名,取消其中的数字"2":J2EE改名为Java EE, J2SE改名为 Java SE,J2ME改名为Java ME
▪ 2009年4月20日甲骨文收购Sun公司,交易价格达74亿美圆
▪ 2011年,JavaSE7.0
▪ 2014年 ,JavaSE8.0
▪ 2017年,JavaSE9.0
▪ 2018年3月,JavaSE10.0
▪ 2018年9月,JavaSE11.0
▪ 2019年3月,JavaSE12.0
▪ 2019年9月,JavaSE13.0
▪ 2020年3月,JavaSE14.0
........................................................................
咱们通常都基于8讲解,不必学习最新的,企业通常都以稳定为主。咱们再介绍一下不一样版本JDK说明
JDK Version 1.1:于1997-02-19发行。
引入的新特性包括:引入JDBC(Java Database Connectivity);支持内部类;引入Java Bean;
引入RMI(Remote Method Invocation);引入反射(仅用于内省)。
J2SE Version 1.2:开发代号为Playground(操场),于1998-12-08发行。
引入的新特性包括:引入集合(Collection)框架;对字符串常量作内存映射;引入JIT(Just In Time)编译器;
引入对打包的Java文件进行数字签名;引入控制受权访问系统资源的策略工具;
引入JFC(Java Foundation Classes),包括Swing 1.0、拖放和Java 2D类库;
在JDBC中引入可滚动结果集、BLOB、CLOB、批量更新和用户自定义类型;
在Applet中添加声音支持。引入Java 插件;
J2SE Version 1.3:开发代号为Kestrel(红隼),于2000-05-08发行。
引入的新特性包括:
引入Java Sound API;
jar文件索引;
对Java的各个方面都作了大量优化和加强。
J2SE Version 1.4:开发代号为Merlin(隼),于2004-02-06发行(首次在JCP下发行)。
引入的新特性包括:
XML处理;
Java打印服务;
引入Logging API;
引入Java Web Start;
引入JDBC 3.0 API;
引入断言;
引入Preferences API;
引入链式异常处理;
支持IPv6;
支持正则表达式;
引入Image I/O slot machine API。
Java Version SE 5.0:开发代号为Tiger(老虎),于2004-09-30发行。
引入的新特性包括:
引入泛型;
加强循环,可使用迭代方式;
自动装箱与自动拆箱;
类型安全的枚举;
可变参数;
静态引入;
元数据(注解);
引入Instrumentation。
Java Version SE 6: 开发代号为Mustang(野马),于2006-12-11发行。
引入的新特性包括:
支持脚本语言;
引入JDBC 4.0 API;
引入Java Compiler API;
可插拔注解;
增长对Native PKI(Public Key Infrastructure)、Java GSS(Generic Security Service)、Kerberos和 LDAP(Lightweight Directory Access Protocol)的支持;
继承Web Services;
作了不少优化。
Java Version SE 7:开发代号是Dolphin(海豚),于2011-07-28发行。
引入的新特性包括:
switch语句块中容许以字符串做为分支条件;
在建立泛型对象时应用类型推断;
在一个语句块中捕获多种异常;
支持动态语言;
支持try-with-resources;
引入Java NIO.2开发包;
数值类型能够用2进制字符串表示,而且能够在字符串表示中添加下划线;
钻石型语法;
null值的自动处理。
Java Version SE 8:开发代号是Spider(蜘蛛),于2014-03-18发行。
支持 lambda支持;
加强日期与时间API的功能;
对垃圾回收的性能也进行了改进;
而且移除了permgen区。
Lambdas表达式与Functional接口
接口的默认与静态方法
方法引用
重复注解
更好的类型推测机制
扩展注解的支持
.......................................................
JavaSE(Java Standard Edition):标准版,定位在我的计算机上的应用
这个版本是Java平台的核心,它提供了很是丰富的API来开发通常我的计算机上的应用程序,包括用户界面接口AWT及Swing,网络功能与国际化、图像处理能力以及输入输出支持等。在上世纪90年代末互联网上大放异彩的Applet也属于这个版本。Applet后来为Flash取代,Flash即将被HTML5取代。
JavaEE(Java Enterprise Edition):企业版,定位在服务器端的应用
JavaEE是JavaSE的扩展,增长了用于服务器开发的类库。如:JDBC是让程序员能直接在Java内使用的SQL的语法来访问数据库内的数据;Servlet可以延伸服务器的功能,经过请求-响应的模式来处理客户端的请求;JSP是一种能够将Java程序代码内嵌在网页内的技术;
JavaME(Java Micro Edition):微型版,定位在消费性电子产品的应用上
JavaME是JavaSE的内伸,包含J2SE的一部分核心类,也有本身的扩展类,增长了适合微小装置的类库:javax.microedition.io.*等。该版本针对资源有限的电子消费产品的需求精简核心类库,并提供了模块化的架构让不一样类型产品可以随时增长支持的能力。
在搭建环境以前咱们先解释一下名词
JDK(Java Development Kit)开发环境,编写Java程序的程序员使用的软件,包含JRE + 类库 + 开发工具包
JRE(Java Runtime Environment)运行环境,运行Java程序的用户使用的软件,包含JVM和解释器
JVM(Java Virtual Machine)Java虚拟机
下载JDK:https://www.oracle.com/java/technologies/javase-downloads.html,选择一个合适的jdk下载便可
安装JDK:跟正常安装软件没什么区别
配置JDK:这步若是不作的话每次编译运行Java文件都须要先写javac和java的全路径,后面再写文件的名字
备注:javac是编译源文件的命令,java是执行字节码文件的命令。
步骤:右击个人电脑--属性--高级系统设置--环境变量--并填写如下内容
JAVA_HOME:你安装jdk的路径,这是个人安装路径:C:\Program Files\Java\jdk1.8.0_131
再修改一下path变量,%JAVA_HOME%\bin
若是是window7则须要这样配,后面加一个分号
测试:打开DOS窗口:Windows键 + R——快捷键呼出运行窗口,输入cmd
输入java -version出现版本号,就表示配置成功
补充:path环境变量做用:将命令所在的路径配置到path中去,就至关于在计算机中“注册”了同样,之后 找这个命令,会直接去你配置的路径下寻找。达到了一个效果:在任意的路径下去执行某个命令---》path环境针对整个操做系统而言。就好比没配path变量以前,java命令须要输入jdk的全安装路径,配了path变量以后,直接输入Java命令便可。
classpath环境变量:有些教程会配这个,实际配不配均可以,只是能够在任意的路径下去执行字节码文件,默认就是.\值
DOS操做系统
DOS命令
在windows中,咱们经过鼠标菜单等来操做系统,而在dos操做系统中,要经过dos命令来操做系统。
是DOS操做系统的命令,是一种面向磁盘的操做命令,
不区分大小写。
windows给咱们保留了相似dos系统的操做界面,能够直接操做磁盘
控制命令台:win+r--->cmd
写第一段程序以前,咱们还须要一个编写代码的工具,咱们当然能够用电脑自带的记事本写,但问题是程序出问题时很差定位在第几行出现了问题,你须要一行行找,因此咱们安装一个编辑器,程序出现问题能更好的查找。
咱们能够先选择notepad++ 这样的文本编辑器,等学到后面能够再使用Eclipse或者IDEA这样的IDE开发工具 。
准备工做作好以后,就能够着手写第一个程序,学习任何技术基本都爱用HelloWorld做为演示案例,咱们也以它做为案例,首先创建一个HelloWorld.java的文件,里面的代码以下:
/** * 解释一下注释,注释的做用就是方便人阅读的,程序编译时会跳过这些注释,下面这些解释的文字就是一个个注释,注释还分为3种 * 一、单行注释:// 注释的内容 * 二、多行注释:/*注释的内容 */ // 三、文档注释:/**注释的内容*/,此注释能够配合javadoc.exe生成一套以网页文件形式体现的该程序的说明文档 //public修饰的类是一个公共类只能有一个,这个类的类名必须与文件名一致 public class HelloWorld { //程序的主方法,表示程序的入口,一个类只能有一个主程序入口 public static void main(String[] args) { //输出语句,输出双引号中的内容,双引号中的内容能够随意改变 System.out.println("第一段程序!"); } } //一个java文件能够有多个类,不是public的就好,可是一般咱们类和类都是分开的,编译时一个java源文件的每一个类都会生成一个class文件 class B{ }
注意:
演示一下如何编译: