Java入门,带你了解Java的诞生、发展与特性,以及Java程序的开发与运行机制

60 阅读8分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天,点击查看活动详情


前言

本文为Java入门基础知识,包含Java的诞生历程,Java的特性和优势,Java的版本介绍,JDK、JRE、JVM关系介绍,Java程序运行机制,以及Java开发IDE推荐等。Java全栈学习路线可参考:【Java全栈学习路线】最全的Java学习路线及知识清单,Java自学方向指引,内含最全Java全栈学习技术清单~

一、Java的诞生

1.C & C++

在以前,C & C++一直是作为最火最流行的编程语言的存在,但是对于熟悉C与C++的小伙伴来说肯定知道C与C++的一些特点属实让人头疼,特别是其中的指针的概念与使用,而后来的Java也是直接摒弃了这一点。我们先来看看C & C++语言的特点。

1972年 C 诞生

C语言的特点如下:

  • 贴近硬件,运行极快,效率极高
  • 操作系统,编译器,数据库,网络系统等
  • 指针和内存管理

1982年C++诞生

C++是在C语言的基础上开发的一种面向对象的编程语言。

C++语言的特点如下:

  • 面向对象
  • 兼容C
  • 图形领域、游戏等

C++与C的区别在于:C++在C的基础上增添类,C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制),而对于C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。

2.Java预想

对于Java诞生之前的预想是想要建立一个新的语言,并且满足以下特点:

  • 语法有点像C
  • 没有指针
  • 没有内存管理
  • 真正的可移植性,编写一次,到处运行
  • 面向对象
  • 类型安全
  • 高质量的类库

从这些特点来看,对于Java的预想无非就是想要发明一种更便于程序员编程的语言,使得程序开发工作更简洁,更高效,说白了就是为程序员创造福利,这也是它在之后能爆火,一直流行到现在的原因。

3.Java初生

1995年的网页简单而粗糙,缺乏互动性。最初诞生的Java语言只能用于一些图形界面开发,PC程序,手机程序还有服务器的开发。当时的Java2分为以下三个版本:

  • Java 2 标准版(J2SE):PC
  • Java 2 移动版(J2ME):手机
  • Java 2 企业版(J2EE):服务器

KJava的诞生确实为软件的开发提供了很大的便利,Bill Gates曾说:这是迄今为止设计的最好的语言!

4.Java发展

随着Java的发展,之后基于Java开发了巨多的平台,工具,系统等,极大的方便了程序的开发,包含:

  • 构建工具:Ant,Maven,Jekins
  • 应用服务器:Tomcat,Jetty,Jboss,Websphere,weblogic
  • Web开发:Struts,Spring,Hibernate,Mybatis
  • 开发工具:Eclipse,Netbean,intellij idea,Jbuilder
  • 2006:Hadoop(大数据领域)
  • 2008:Android(手机端)

二、Java 特性和优势

对于Java语言的特性总结如下:

  • 简单性
  • 面向对象
  • 可移植性
  • 高性能
  • 分布式
  • 动态性
  • 多线程
  • 安全性
  • 健壮性

Java语言的这些特性也是它能够持续经久不衰打下了坚实的基础。

三、Java三大版本

Java语言的创造目标是: Write Once、Run Anywhere,就是能够很好的适配不同的终端,不管是电脑桌面应用,Web应用,手机App应用,服务器开发,还是一些其他设备,比如家电,汽车,手表等的嵌入式开发,Java语言都能做。所以Java语言整体为了应对不同程序的开发,分为了以下三个版本:

  • JavaSE:标准版(桌面程序,控制台开发…)
  • JavaME:嵌入式开发(手机,小家电….)
  • JavaEE:E企业级开发(web端,服务器开发…)

四、JDK、JRE、JVM

很多小伙伴刚接触Java的时候肯定一直对这三个名词搞不清楚 ,JDK是Java开发工具包,JRE是运行基于Java语言编写的程序所不可缺少的运行环境,JVM是我们常说的java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行。

  • JDK:Java Development Kit,Java开发工具包
  • JRE:Java Runtime Environment,运行Java程序的运行环境
  • JVM:Java Virtual Machine,java虚拟机

三者间的关系:简单来说就是JDK包含JRE,JRE又包含JVM的关系。关系图如下:

2.png

五、Java开发环境

我们在开发Java程序之前,肯定要配置好相关的开发环境,对于Java开发环境的配置可以参考:

JDK下载、安装与配置环境变量:JDK 安装与环境变量配置(Win10详细版)

六、HelloWorld

配置好Java开发环境以后我们就可以进行Java程序开发了,那么先来一个经典的HelloWorld入门程序开发来体验一下吧~

public class HelloWorld{
    public static void main(String[] args){
        System.out.println("Hello,Wrold!");
    }
}

七、Java程序运行机制

开发语言是分为编译型语言和解释型语言的,C与C++是属于编译型语言,而Java是属于解释型语言。那么究竟什么是编译型语言,什么是解释型语言,我们先来看看它们的定义和特点:

编译型语言

  • 编译型语言写的程序执行之前,需要一个专门的编译过程,一次性的编译成平台相关的机器语言文件,运行时脱离开发环境,运行效率高
  • 与特定平台相关,一般无法移植到其他平台
  • 一次编译,多次执行
  • 编译型语言:C、C++、Delphi、Pascal、Fortran

解释型语言

  • 使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行
  • 是代码在执行时才被解释器一行行动态翻译和执行,而不是在执行之前就完成翻译,效率较低
  • 只要平台提供相应的解释器,就可以运行源代码,程序可移植性好;
  • 解释型语言:Java、python,javascript、Basic

3.png

八、IDE

集成开发环境(IDE,Integrated Development Environment),为了方便我们程序员的开发,肯定是需要使用一款IDE来进行开发工作的,IDE有很多,博主在这里为大家介绍几款主流的IDE以及它们的特点,大家可以根据自己的喜好在开发时进行选择使用。

  1. Java IDE Eclipse ,官网下载地址 :www.eclipse.org/ 它是开源免费的,被称为最有名的Java IDE,插件资源非常丰富,博主刚开始在学习Java的时候用的就是这款IDE。
  2. Java IDE NetBeans ,官网下载地址 : www.netbeans.org/ 它是开源免费,配置比Eclipse简单、汉化做得不错、装插件方便、在线中文文档多,对于我们中国程序员来说非常友好。
  3. Java IDE JBuilder ,官网下载地址 : www.embarcadero.com/products/jb… 它是收费的,但是插件丰富,缺点是体积大、资源占用大。
  4. Java IDE IntelliJ IDEA ,官网下载地址 : www.evget.com/product/299… 它是收费的,被公认为最好的Java开发平台之一,调试功能非常优秀,也是博主日常开发中最经常用的,首推这款IDE,对于我们学生可以进行学生认证就可以免费试用。(主流)
  5. Java IDE JDeveloper (Oracle) ,官网下载地址 : www.oracle.com/technology/… 它也是一款免费的IDE,而且它还支持UML建模、调试功能非常优秀。
  6. Java IDE SlickEdit ,官网下载地址 : www.slickedit.com/ 它也是收费的,特点是:易于安装和配置、支持的平台丰富、调试功能强大。
  7. Java IDE jEdit ,官网下载地址 : www.jedit.org/ 它是开源免费的一款IDE,内嵌的Beanshell引擎、灵活、执行效率高。
  8. Java IDE JCreater ,官网下载地址 : www.jcreator.com/ 它也是开源免费的一款IDE,小而且快,常用的功能都支持,很适合初学者。

后记

以上为大家介绍了:Java的诞生历程,Java的特性和优势,Java的版本介绍,JDK、JRE、JVM关系介绍,Java程序运行机制,以及Java开发IDE推荐。了解了Java的基础知识利于我们后边对于Java开发的深入学习,如果你想继续深入的学习Java语言程序开发,Java全栈学习路线可参考:【Java全栈学习路线】最全的Java学习路线及知识清单,Java自学方向指引,内含最全Java全栈学习技术清单~