学习Java有一段时间了,可是一直缺乏一个系统的思想,如今从新经过书籍中、网上的文章,视频等资料,整理与回顾Java的知识点。java
言归正传,让咱们先从了解Java语言开始。程序员
Java是由Sun Microsystems公司推出的Java面向对象程序设计语言(如下简称Java语言)和Java平台的总称。由James Gosling和同事们共同研发,并在1995年正式推出。Java最初被称为Oak,是1991年为消费类电子产品的嵌入式芯片而设计的。1995年改名为Java,并从新设计用于开发Internet应用程序。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态Web、Internet计算。今后,Java被普遍接受并推进了Web的迅速发展,经常使用的浏览器均支持Javaapplet。另外一方面,Java技术也不断更新。Java自面世后就很是流行,发展迅速,对C++语言造成有力冲击。在全球云计算和移动互联网的产业环境下,Java更具有了显著优点和广阔前景。[引用自百度百科]spring
一、简单。编程
Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。另外一方面,Java丢弃了C++中不多使用的、很难理解的、使人迷惑的那些特性。去掉了C和C++中许多复杂功能,如指针、操做符重载、多继承、自动的强制类型转换,没有goto语句,没有struct和union等。特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员没必要为内存管理而担心。浏览器
二、面向对象。安全
面向对象能够说是Java最基本的特性。Java语言的设计彻底是面向对象的,它不支持相似C语言那样的面向过程的程序设计技术。全部的Java程序和applet均是对象,Java支持静态和动态风格的代码继承及重用。它比C++更完全,纯度更高。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。网络
三、跨平台性。多线程
与平台无关是 Java 语言最大的优点。其它语言编写的程序面临的一个主要问题是 操做系统的变化,处理器升级以及核心系统资源的变化,均可能致使程序出现错误或没法运行。Java的虚拟机成功地解决了这个问题,Java编写的程序能够在任何安装了 Java虚拟机 JVM 的计算机上正确的运行,Sun公司实现了本身的目标 “一次写成,到处运行”app
具体表现为:框架
四、健壮的。
Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。
五、安全性。
做为网络语言,安全是很是重要的。Java的安全性可从两个方面获得保证。一方面,在Java语言里,像指针和释放内存等C++功能被删除,避免了非法内存操做。另外一方面,当Java用来建立浏览器时,语言功能和一类浏览器自己提供的功能结合起来,使它更安全。Java语言在你的机器上执行前,要通过不少次的测试。它通过代码校验,检查代码段的格式,检测指针操做,对象操做是否过度以及试图改变一个对象的类型。另外,Java拥有多个层次的互锁保护措施,能有效地防止病毒的入侵和破坏行为的发生。
六、多线程。
在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来建立。一般有两种方法来建立线程:其一,使用型构为Thread(Runnable)的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类建立的对象即为线程。值得注意的是Thread类已经实现了Runnable接口,所以,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。
七、动态的。
Java语言的设计目标之一是适应于动态变化的环境。Java程序须要的类可以动态地被载入到运行环境,也能够经过网络来载入所须要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。
固然,全部的事情都不多是完美的,有优势必然会有缺点。
一、效率:由于要先通过编译和垃圾回收机制等,因此速度比较慢!不适合大型的程序,网络游戏等的编程!
二、复杂性,正由于它的功能强大,所以也增长了其复杂性,像当今流行的框架有不少,什么struts,spring,jQuery等等,无疑增长了java的复杂性。
计算机高级语言按照程序执行方式能够分为编译型和解释型。
编译型语言是指在程序执行以前,首先会有一个单独的编译过程,针对特定的平台(操做系统),将高级语言翻译成机器语言,之后执行这个程序的时候,即可以直接运行,这样编译后能够脱离开发环境独立运行,效率也能够高一些。但也有一个缺点,那就是编译语言被编译成特定平台上的机器码,一般没法直接转移到其余平台运行,若是有需求,须要从新将源代码转移到特定平台,针对部分平台进行修改以后,从新编译。C/C++ 等都是编译型语言。
解释型语言是指在运行时才将程序翻译成机器语言,跨平台性较好,但不足之处就是每次执行都须要进行一次编译。至关于把编译型语言中的编译和解释的过程混合到一块儿同时完成。Ruby,Python等都是解释型语言。
Java语言比较特殊,Java语言编写的程序也须要通过编译步骤,只不过它并非编译成特定语言的机器码,而是生产与机器无关的字节码(*.class文件)。这种字节码不能直接运行,须要通过Java解释器(JVM Java虚拟机)来运行。所以,Java语言是先编译,后解释,将这两个步骤分开。
上面介绍到,Java程序将字节码运行须要JVM虚拟机,下面咱们来认识一下它。
Java虚拟机,即JVM(Java Virtual Machine)。当Java编译器编译Java代码的时候,生成的是面向JVM的字节码,再由JVM面向各操做系统,所以使用Java语言编写的程序,其实是运行在JVM之上,而不是运行在操做系统上。
它有一个解释器组件,能够实现Java字节码和计算机操做系统之间的通讯。
JVM相似于一个抽象的计算机,和实际的计算机同样,它具备指令集并使用不一样的存储区域。复杂执行指令,管理数据、内存和寄存器。
JDK是JAVA开发工具包的简称,是Sun提供的一套用于开发Java程序的开发包。它提供了编译,运行Java程序所需的各类工具和资源。包含Java编译器,Java运行时环境,经常使用Java类库等。
Jre是运行Java程序的必备条件,Jre包含JVM,JVM是运行Java程序的核心虚拟机,而运行Java程序不只须要核心虚拟机,还须要类加载器,字节码校验器以及大量基础类库,而JDK还包含了开发工具,所以若是只须要运行Java程序,只须要安装Jre便可。
Sun把Java分为Java SE、Java EE、Java ME。