一、简述Java

​ Java是一种高级的面向对象的程序语言,在此处,不需要了解什么叫做面向对象,因为后面的文章中自然会谈到这方面的论述。那么,Java就是一个计算机的编程语言。

1.1 Java的历史

  • Java最初叫做OAK,由Java之父詹姆斯·戈士林博士设计。
  • 于1995年由Sun公司推出,并更名为Java
  • 1998年JDK1.2时,更名为Java 2 Platform

​ 从宏观的角度去看,大体上可以将计算机的编程语言分为三大类,分别是机器语言、汇编语言以及高级语言。机器语言也就是我们通常说的由多个”0“和”1“构成的二进制语言,不像十进制逢十进一,二进制一般逢二进一。当然,这不是我们讨论的重点。汇编语言我们通常会理解成面向机器的程序设计语言,因为形如”100011“这样的编码我们没法直接能够明白这个代码是用来干什么的,于是创造出了助记符与机器码一一对应。

​ 汇编语言我们通常会理解成面向机器的程序设计语言,因为形如”100011“这样的编码我们没法直接能够明白这个代码是用来干什么的。用一些容易理解和记忆的字母、单词来代替一个特定的指令,比如:用“ADD”代表数字逻辑上的加减,“ MOV”代表数据传递等等,通过这种方法,人们很容易去阅读已经完成的程序或者理解程序正在执行的功能,对现有程序的bug修复以及运营维护都变得更加简单方便。

​ 在经历了机器语言和汇编语言后,人们发现每种机器都需要根据其机器结构进行编程,这样,任何软件都没有可能进行推广。这个时候就需要设计一个不依赖于硬件,能够在不同机器上运行的程序。使得免去编程的重复过程,提高效率,同时,这种程序又能够进行再次开发出其他的程序,那么新一代的语言就此诞生——计算机的高级语言。当时的计算机造价不菲,但是每天的计算量有限,如何有效的利用计算机有限的计算能力成为了当时人们面对的问题。

​ Java就是一种高级语言,Java在1995年由Sun公司推出的一种极富创造力的面对对象的程序设计语言,它由Java之父詹姆斯·戈士林博士设计。作为Sun研究院院士,詹姆斯·戈士林亲手设计了Java语言,并完成了Java技术的原始编译器和虚拟机。Java最初的名字是OAK,在1995年被重命名为Java。

​ Java是一个高度跨平台的编程语言,由于用其编写的程序运行在JVM(Java Virtual Machine)上,所以在各种能够安装JVM的机器上都能够运行,例如Windows、Unix、Linux、MacOS,真正意义上的实现了”一次编程,到处运行”的理念。Java非常适合于企业网络和Internet环境,并且已成为Internet中最有影响力、最受欢迎的编程语言之一。

1.2 Java的应用领域

​ 借助Java,程序开发人员可以自由地使用现有的硬件和软件平台。这是由于Java是独立于平台之上的,它还可以应用于计算机之外的领域,例如我们使用的Android手机,所用的主流开发语言便是Java。Java的用途数不胜数,Java的应用领域包括:桌面应用系统的开发、嵌入式系统的开发、电子商务应用、企业级应用开发、交互式系统开发、多媒体系统开发、分布式系统开发、Web应用系统的开发等等。

1、服务器程序

Java在金融服务业的应用非常广泛,许多跨国投资银行例如:Goldman Sachs(高盛投资),Citigroup(花旗集团),Barclays(巴克莱银行)以及其他银行,都用Java来编写前台和后台的电子交易系统,结算和确认系统,数据处理项目以及其他项目。

大多数情况下,Java被用在服务器端开发,但多数没有任何前端,它们通常是从一个服务器(上一级)接收数据,处理后发向另一个处理系统(下一级处理)。

2、嵌入式领域

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

当初,Java 被设计用来在嵌入式设备上工作。事实上,这只是其中的一个领域,这只是当初的“一次写入,随便畅游”的项目,现在看起来是这样了。

3、大数据技术

Hadoop以及其他大数据处理技术都是用Java或者其他,例如Apache的基于Java 的 HBase和Accumulo以及ElasticSearchas。

但是Java在此领域并未占太大空间,但只要Hadoop和ElasticSearchas能够成长壮大,Java 依旧还有潜力去在这个市场占据一部分。

4、网站领域

同样,Java在电子商务领域以及网站开发领域占据这大部分席位。你可以运用许多不同的框架来创建web项目,SpringMVC,Struts2.0 以及 frameworks。

即使是简单的servlet,jsp和以struts为基础的网站在政府项目中也是很受欢迎的。例如医疗救护,保险,教育,国防以及其他的不同部门网站都是以Java为基础来开发的。

总之,Java语言作为一种发展迅速的语言程序,已经深刻揭示了程序编写过程的精髓,并借助其严谨的结构与间接的编写过程,为Java语言的未来发展提供了重要保证。如今,有关Java语言方面的研究正朝着服务器端优势应用系统方面延伸,相信未来Java语言必将具有更加广泛的应用,也必将会给IT行业的发展起到更有力的促进作用。

1.3 Java的版本

虽然现如今,在笔者完成这篇文章的时候已经更新到了jdk11(LTS),但是还是简单的介绍一下Java版本的一个发展历程。

1.Java SE:JavaSE以前称为 J2SE,是整个Java的基础和核心,这是我们主要学习的一个部分,也是JavaEE和JavaME技术的基础,主要用于开发桌面应用程序。学会后可以做一些简单的桌面应用如:计算器,记事本,内网聊天室,财会应用系统等。

2.Java ME(Java Platform,Micro Edition):这个版本以前称为 J2ME,主要应用于嵌入式开发,比如手机程序的开发。我们现如今用的安卓应用最开始的时候就是基于此进行开发的。

3.Java EE(Java Platform,Enterprise Edition):这个版本以前称为 J2EE,它提供了企业级应用开发的完整解决方案,比如开发网站,还有企业的一些应用系统,是Java技术应用最广泛的领域。主要还是偏向于WEB的开发,而Java EE的基础就是Java SE,所以我们在学习Java SE的时候,基础一定要打好,因为这是最基本的,也是最核心的。

在这里需要注明一点的是,我们如果在网上搜索资料Java的版本基本上都是写的Java8,Java11。这些不能成为Java的版本,准确的说是jdk(Java se development kit)版本或者jre(Java suntime Environment)版本,而Java的分类通常也就是上述的三种,JavaSE、JavaME和JavaEE。

写到这里就想说一下jdk和jre的关系了。

JRE(Java Runtime Enviroment)是Java的运行环境。面向Java程序的使用者,而不是开发者。如果你仅下载并安装了JRE,那么你的系统只能运行Java程序。JRE是运行Java程序所必须环境的集合,包含JVM标准实现及 Java核心类库。它包括Java虚拟机、Java平台核心类和支持文件。它不包含开发工具(编译器、调试器等)。

JDK(Java Development Kit)又称J2SDK(Java2 Software Development Kit),是Java开发工具包,它提供了Java的开发环境(提供了编译器javac等工具,用于将java文件编译为class文件)和运行环境(提 供了JVM和Runtime辅助包,用于解析class文件使其得到运行)。如果你下载并安装了JDK,那么你不仅可以开发Java程序,也同时拥有了运 行Java程序的平台。JDK是整个Java的核心,包括了Java运行环境(JRE),一堆Java工具tools.jar和Java标准类库 (rt.jar)。

JDK并不是只有Oracle公司唯一发布,最主流的JDK是Oracle和Sun公司发布的JDK,除了Oracle和Sun之外,还有很多公司和组织都开发了自己的JDK,GNU组织开发的JDK,我国华为的毕昇 JDK 8(bishengjdk-8)和阿里云开发的Alibaba Dragonwell等等。

1.4 如何学好Java

如何学好Java语言,这是所有初学者共同面对的问题,其实学什么语言都一样,需要注意以下几点:

  1. 明确自己的学习目标,也就是自己到底要用Java做什么,而不是为了学Java而学Java。
  2. 初学者不用看太多的书,找本Java零基础的书,跟着书上的程序反复练习,举一反三,做好总结。
  3. 可以先简单快速的将书看完,将书中的程序记录下来并做好注释,方便自己复习和查阅。
  4. 了解数据结构和设计模式。开发程序必须编写程序代码,这些代码必须具有高度的可读性,只有具备了可读性以后,程序才能够有调试、维护和升级的价值。学习数据结构能够帮助学习Java的很多类的形成过程,学习设计模式能够更好的把握项目的整体结构。
  5. 不要死记语法,在刚刚接触的时候,很多关键字容易记不清,只需要掌握好基本语法,并大概了解一些功能就可以了。借助开发工具(例如IDEA、Eclipse)的代码辅助功能,完成代码的录入,这样可以加快学习效率,降低学习成本。

【Java基础上】一、简述Java的更多相关文章

  1. 【Java基础】4、java中的内部类

    内部类的分类:常规内部类.静态内部类.私有内部类.局部内部类.匿名内部类. 实例1:常规内部类 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2 ...

  2. Java基础系列1:Java基本类型与封装类型

    Java基础系列1:Java基本类型与封装类型 当初学习计算机的时候,教科书中对程序的定义是:程序=数据结构+算法,Java基础系列第一篇就聊聊Java中的数据类型. 本篇聊Java数据类型主要包括两 ...

  3. 【Java基础】11、java方法中只有值传递,没有引用传递

    public class Example { String testString = new String("good"); char[] testCharArray = {'a' ...

  4. java基础3.0:Java常用API

    本篇介绍Java基础中常用API使用,当然只是简单介绍,围绕重要知识点引入,巩固开发知识,深入了解每个API的使用,查看JavaAPI文档是必不可少的. 一.java.lang包下的API Java常 ...

  5. JAVA基础第一章-初识java

    业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 从今天开始,我将会持续更新java基础知识,欢迎关注. java的诞生 ...

  6. Java基础系列篇:JAVA多线程 并发编程

    一:为什么要用多线程: 我相信所有的东西都是以实际使用价值而去学习的,没有实际价值的学习,学了没用,没用就不会学的好. 多线程也是一样,以前学习java并没有觉得多线程有多了不起,不用多线程我一样可以 ...

  7. 夯实Java基础系列1:Java面向对象三大特性(基础篇)

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 [https://github.com/h2pl/Java-Tutorial](https: ...

  8. 夯实Java基础系列5:Java文件和Java包结构

    目录 Java中的包概念 包的作用 package 的目录结构 设置 CLASSPATH 系统变量 常用jar包 java软件包的类型 dt.jar rt.jar *.java文件的奥秘 *.Java ...

  9. 夯实Java基础系列15:Java注解简介和最佳实践

    Java注解简介 注解如同标签 Java 注解概述 什么是注解? 注解的用处 注解的原理 元注解 JDK里的注解 注解处理器实战 不同类型的注解 类注解 方法注解 参数注解 变量注解 Java注解相关 ...

随机推荐

  1. JVM 垃圾回收算法和垃圾回收器

    JVM 垃圾回收算法和垃圾回收器. 一.垃圾回收的区域 栈:栈中的生命周期是跟随线程,所以一般不需要关注. 堆:堆中的对象是垃圾回收的重点. 方法区:这一块也会发生垃圾回收,不过这块的效率比较低,一般 ...

  2. 基于Docker安装常用软件

    基于Docker安装常用软件 本实验介绍如何基于Docker安装常用的软件,具体包括: Ubuntu Cetnos Nginx Node.js PHP MySQL Tomcat Redis Mongo ...

  3. 2.docker下centos镜像

    1.下载并运行 # 交互模式下载并运行centos容器 $ docker run -it centos:latest /bin/bash 1.1 配置centos的环境别名 $ vi /etc/bas ...

  4. ElGamal算法

    简介 ElGamal算法可以用于加密和签名,其安全性依赖于计算有限域上离散对数的难度. ElGamal密钥 生成密钥对时,首先选择素数p,两个随机数g和x,g和x都小于p,然后计算: y = g ^ ...

  5. SpringBoot和Spring到底有没有本质的不同?

    现在的Spring相关开发都是基于SpringBoot的.最后在打包时可以把所有依赖的jar包都打进去,构成一个独立的可执行的jar包.如下图: 使用java -jar命令就可以运行这个独立的jar包 ...

  6. NOIP模拟测试6「那一天我们许下约定(背包dp)·那一天她离我而去」

    那一天我们许下约定 内部题,题干不粘了. $30分算法$ 首先看数据范围,可以写出来一个普通dp #include<bits/stdc++.h> #define ll int #defin ...

  7. 地图可视化神器keplergl新增对jupyter lab 3.0的支持

    就在几天前,地图可视化神器kepler.gl面向Python的接口库keplergl迎来了新的0.3.0版本更新. 虽然官方文档还并未及时更新相关的内容说明,但我在快速地试用之后发现,现在的keple ...

  8. Exponentiation java大数

    Exponentiation 大数a的n次幂,直到读到EOF(文件结尾)为止,其中忽略小数后面的0 1 import java.util.*; 2 import java.math.*; 3 impo ...

  9. gRPC 拦截器能做些什么?

    什么是拦截器? 拦截器是一种横切维度的功能延展. 具象说明一下,高速收费站就是一种拦截器.它可以做什么?收费,查证,交通控制等等,面向所有穿行过往的车辆. gRPC 拦截器主要分为两种:客户端拦截器( ...

  10. MySQL不支持DELETE使用表别名?

    最近做的需求经常和数据库在打交道, 因为系统页面上某些展示的字段并不是在前端写死的, 而是配置在数据库中, 这样的话便于维护和扩展. 于是遇到了一个MySQL中比较细节性的问题. 日常开发中不少程序员 ...