从屌丝到架构师的飞越(入门篇)-JAVA概述

一、介绍

计算机语言:(Computer Language)指用于人与计算机之间通讯的语言。计算机语言是人与计算机之间传递信息的媒介。计算机系统最大特征是指令通过一种语言传达给机器。为了使电子计算机进行各种工作,就需要有一套用以编写计算机程序的数字、字符和语法规划,由这些字符和语法规则组成计算机各种指令(或各种语句)。这些就是计算机能接受的语言。程序员通过这些指令来指挥计算机进行各种工作。

计算机语言主要由机器语言、汇编语言、高级语言,组成。

机器语言:毋庸置疑是计算机可以直接识别和使用的语言。但是在编程的时候,通常不会选择机器语言,因为机器语言都是由二进制0或1组成的编码。不便于编程人员的记忆与识别。

那么汇编和高级语言是编程人员常用的语言。

汇编语言:采用英文缩写的标识符,容易识别和记忆。那么为什么不都用汇编语言编程,这就要解释什么是高级语言。

高级语言:采用更接近人类的自然语言进行编程,进一步简化了程序编程的过程,所以,大多数编程者会选择高级语言。

现在我们讲解的Java语言就是高级语言的一种。

二、内容

1、Java语言介绍

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

    Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。

2、Java语言发展史(了解)

詹姆斯·高斯林(James Gosling)

SUN– (Stanford University Network斯坦福大学网络公司) 

1995年5月23日,Java语言诞生

1996年1月 JDK1.0

1997年2月 JDK1.1

1998年12月 JDK1.2(将Java分成了J2SE,J2EE,J2ME)

2000年5月 J2SE1.3

2002年2月 J2SE1.4(1.4.2版本很多公司在使用)

2004年10月  JDK1.5(改名JavaSE5.0,JavaEE,JavaME)

2006年12月 JavaSE6.0

2009年04月20日,甲骨文(Oracle)74亿美元收购Sun。

2011年7月  JavaSE7.0(市场主流版本)

2014年3月 JavaSE8.0

2017年9月 JavaSE9.0

java语言的特点是,简单易用、安全可靠、主要面向Internet编程。从问世以来,发展的就非常迅速。 

3、JAVA应用模型

现在市场上绝大多数企业应用采用Java作为编程语言,Java语言应用于服务器开发,智能家居,网站的后台维护,手机应用后台等等。

SUN公司为了让使用Java语言的开发人员可以针对特定的市场进行开发,SUN公司将Java划分为三个版本,分别是JavaSE、JavaME、JavaEE

3.1、JavaSE

JavaSE(Java Platform Standard Edition——Java平台标准版)标准版是为开发普通桌面和商务应用程序提供的解决方案,JavaSE是三个平台最核心的部分,JavaEE和JavaME都是从JavaSE的基础上发展而来的,JavaSE平台包括了Java最核心的类库,包括,如集合,IO,数据库连接以及网络编程等。


3.2、JavaEE

JavaEE(Java Platform Enterprise Edition 企业)企业版,是为了开发企业级应用程序提供的解决方案。JavaEE可以被看做一个技术平台,该平台用于开发、装配以及部署企业及应用程序,其中主要包括Servlet、JSP、JavaBean、JDBC、EJB、WebService等技术。

3.3、JavaME

JavaME(Java Platform Micro Edition  微型)小型版是为了开发电子消费产品和嵌入式设备提供的解决方案。JavaME主要用于小型数字电子设备上的软件程序的开发。例如,为家用电器增加智能化控制和联网功能,为手机增加新的游戏和通讯录管理功能。此外,JavaME提供了HHTTP等高级Internet协议,是移动电话能以Client/Server方式直接访问Internet的全部信息,提供最高效率的无线交流。

(Java有这些功能,现在基本退出舞台,由安卓、IOS等移动端操作语言替代,安卓和Java的关系大家下去可以去了解一下,简单的说安卓学习也是要必须先学JavaSE的)


4、Java技术应用领域

4.1、Android应用

许多的Android应用都是Java程序开发者开发。虽然Android运用了不同的JVM以及不同的封装方式,但是代码还是用Java语言所编写。相当一部分的手机都支持Java游戏,这就使得很多非编程人员都认识了Java。

4.2、金融应用的服务器程序

Java在金融服务业的应用非常广泛,很多第三方交易系统、银行、金融机构都选择用Java开发,因为相对而言,Java较安全。大型跨国投资银行用Java来编写前台和后台的电子交易系统,结算和确认系统,数据处理项目以及其他项目。大多数情况下,Java被用在服务器端开发,但多数没有任何前端,他们通常是从一个服务器(上一级)接收数据,处理后发向另一个处理系统(下一级处理)。

4.3、网站

Java在电子商务领域以及网站开发领域占据了一定的席位。开发人员可以运用许多不同的框架来创建web项目,springmvc,Struts2.0以及framework(框架,三个主要部分: 服务端、客户端和Linux驱动)。即使是简单的servlet,jsp和以struts为基础的网站在征服项目中也经常被用到。例如医疗救护、保险、教育、国防以及其他的不同部门网站都是以Java为基础来开发的。

4.4、嵌入式领域

Java在嵌入式领域发展空间很大。在这个平台上,只需130KB就能够使用Java技术(在只能卡或者传感器上)。

4.5、大数据技术

Hadoop(Apache05年开发分布式系统基础架构)以及其他大数据处理技术很多都是用的Java,例如Apache的技术Java的HBase(一个分布式的、面向列的开源数据库,HBase是Apache的Hadoop项目的子项目)和Accumulo(是一个可靠的、可伸缩的、高性能的排序分布式的 Key-Value 存储解决方案,基于单元访问控制以及可定制的服务器端处理)以及ElasticSearch(ES是一个基于Lucene并采用Restful API 标准的高可扩展性和高可用性的实时数据分析的全文检索工具。)说没有Java就没有大数据一点也不为过。

4.6、高频交易的空间

Java平台提高了这个平台的特性和即时编译,他同时也能够想C++一样传递数据,正是由于这个原因,Java成为程序员编写交易平台的首选语言,虽然性能不比C++,但开发人员可以避开安全性,可移植性和维护性等问题。

4.7、科学应用

Java在科学应用中是很好的选择,包括自然语言处理。最主要的原因是因为Java比C++或者其他相对安全性、便携性、可维护性以及其他高级语言的并发性更好。

5、Java语言特点

Java应用广泛,受到大众的欢迎,其根本原因是Java语言的众多突出优点(优点肯定是与其他高级语言相比较得来的)

介绍几个主要的特点

5.1、简单:

Java看起来设计的很像C++,但是为了是语言小和容易熟悉,设计者把C++语言种许多可用的特征去掉了,这些特征是一般程序员很少使用的,例如:Java不支持go to语句,代之以提供break和continue语句以及异常处理。Java还剔除了C++的操作符过载(重载overload)和多继承特征,并且不使用主文件,免去了预处理程序。因为Java没有结构,数组和串都是对象,所以不需要指针。Java能够自动处理对象的引用和间接引用,实现自动的无用单元收集,(垃圾回收机制)使用户不必为存储(内存)管理问题烦恼,能把更多的时间和精力花在研发上。

5.2、面向对象:

Java是一个面向对象的语言,对程序员来说,这意味着要注意应用数据和操作数据的方法(method),而不是严格地用过程来思考。在一个面向对象的系统中,类(class)是数据和操作数据的方法和集合。数据和方法一起描述对象(object)的状态和行为。每一对象是其状态和行为的封装。类是按一定体系和层次安排的,使得子类可以从超类继承行为。在这个类层次体系中有一个根类,它是具有一般行为的类。Java程序是用来组织的。

为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字implements)。Java语言全面支持动态绑定,而C++语言只对函数使用动态绑定。

Java还包括一个类的扩展集合,分别组成各种程序包(package),用户可以在自己的程序中使用。例如,Java提供产生图形用户接口的类(java.awt包),这里awt是抽象窗口工具集(abstract windowing tookit)的缩写,处理输入输出的类(java.io包)和支持网络功能的类(java.net包)。

5.3、分布式

Java设计成支持在网络上应用,它是分布式语言,Java既支持各种层次的网络连接,又以Socket类支持可靠的流(steam)网络连接,所以用户可以产生分布式的客户机和服务器。

网络变成软件应用的分布运载工具。Java程序只需编写一次,就可到处运行。

5.4、稳健性

Java原来是用作编写消费类家用电子产品软件的语言,所以他是被设计成高可靠和稳健软件的。Java消除了某些编程错误,使得用它写可靠软件相当容易。

Java是一个强类型语言,它允许扩展编译时检查潜在类型不匹配问题的功能。Java要求显示方法声明,它不支持C语言风格的隐式声明。这些严格的要求保证编译程序能捕捉调用错误,这就导致会开发出更可靠的程序。

可靠性方面最重要的增强之一是Java的存储模型。Java不支持指针,它消除重新存储和讹误(文字错误;字句上的疏漏差误)数据。类似的,Java自动的“无用单元收集”预防存储漏泄和其它有关动态存储分配和解除分配的有害错误。Java解释程序员也执行许多运行时的检查,诸如验证所有数组和串访问是否在界限之内。

5.5、安全性

Java的存储分配模型是它防御恶意代码的主要方法之一。Java没有指针,所以程序员不能得到隐蔽起来的内幕和伪造指针去指向存储器。更重要的是,Java编译程序不处理存储安排决策,所以程序员不能通过查看声明去猜测类的实际存储安排。编译的Java代码中存储引用在运行时由Java解释程序决定实际存储地址。

Java运行系统使用字节码验证过程保证装载到网络上的代码不违背任何Java语言限制。这个安全机制部分包括类如何从网上装载。例如,装载的类是放在分开的名字空间而不是局部类,预防恶意的小应用程序用它自己的版本来代替标准Java类。

Java语言不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,从而使应用更安全。

5.6、可移植性(跨平台)

Java使得语言声明不依赖与实现的方面。例如,Java显示说明每个基本数据类型的大小和它的运算行为(这些数据类型由Java语法描述)。

Java环境本身对新的硬件平台和操作系统是可移植的。Java编译程序也用Java编写,而Java运行系统用ANSIC语言编写。

5.7、高性能

Java是一种先编译后解释的语言,所以他不如全编译性语言快。但是有些情况下性能是很要紧的,为了支持这些情况,Java设计者制作了“及时”编译程序,它能在运行时吧Java字节码翻译成特定CPU(中央处理器)的机器代码,也就是实现全编译了。

Java字节码格式设计时考虑到这些“及时”编译程序的需要,所以生成机器代码的过程相当简单,它能产生相当好的代码。

5.8、支持多线程

Java语言是支持多线程的,所谓的多线程可以简单地理解为程序中有多个任务可以并发执行,这样可以在很大程度上提高程序的执行效率。

6、JAVA核心JDK与JRE

JRE为Java的运行时环境,是运行Java程序依赖的。如果仅仅是运行已经存在的Java程序,只安装JRE即可。

JDK为Java的开发环境,是开发时依赖的。包含JRE。

没有JDK的话,无法编译Java程序,如果想只运行Java程序,要确保已安装相应的JRE。

Java语言通过在不同的操作系统上安装对应的Java虚拟机实现了跨平台, 即java的.class程序可以在不同操作系统上均可以运行。(java的.class文件相当于Windows中的.exe文件,是可执行的程序)

java语言是跨平台的,java虚拟机不是跨平台的。

7、Java工作原理

    JAVA的工作原理是:“一处编译,到处运行"。(.java源文件,必须编译成.class文件,在各种java平台层都可以运行)

硬件层:就是没有任何操作系统的计算机主要是指我们的硬件(主机,显示器等)。

操作系统层:是指我们的windows\linux\unix\android\ios等

JAVA平台层:针对不同的操作系统JAVA提供了不同的虚拟机

应用平台层:各种JAVA应用程序(如:QQ、百度视频等)、JAVA-WEB程序(12306、QQ空间等)

创建那源文件*.java文件

通过编译器(javac),编译成.class文件(字节码文件),

通过解释器(java),在计算机中解释执行.class文件