一、Java的发展历史

Java是由SUN公司的开发人员James Gosling及其领导的一个开发小组与1995年开发并推出的一门高级编程语言。经过二十几年的发展已经成为最受程序员欢迎、使用最为普遍的编程语言之一。

2004年J2SE 5.0版本问世,更新力度大,Java从此进入了发展的快车道。并将J2SE 5.0改名为Java SE 5.0。

2009年Oracle公司(甲骨文)收购Sun公司。

2014年,Java SE 8发布。(企业常用版本)

以上年份并不重要,只是为了让大家简单的了解一下Java的发展历程。

跟大家分享一个有趣的小故事,其实Java之前不叫Java,而是叫Oak(橡树),是以高斯林办公室外面的一颗橡树命名的。当他们去注册商标时,发现Oak已经被注册。于是乎,Java的几位爸爸们开始讨论给Oak改名字,他们一边喝着印度尼西亚的Java(咖啡名称)一边想名字。喝着喝着就决定把Oak改成了Java。这也是为什么Java的Logo上有一个咖啡杯的图案。

不得不说,外国人起名字真的很随意,哈哈。

詹姆斯·高斯林(Java之父)

二、Java的分类

Java SE(J2SE) ——基础部分,Java的标准版本,包括面向对象、API、JVM等等。主要应用于桌面软件的开发,如QQ、优酷等。

Java EE(J2EE) —— 企业级应用的开发,Java的企业版,建立于Java SE的基础之上,包括JSP、EJB、Service等等。主要应用于网站的开发。

Java ME(J2ME) —— 嵌入式开发。主要应用于手机游戏、手机软件、机顶盒等的开发。

而我们主要是针对先对Java SE进行学习,为后面的Java EE打下良好的基础。

三、Java的跨平台性

Java语言之所以能够受广大程序员的喜爱与它的跨平台性是分不开的。

跨平台是个什么?

我们常用的平台有苹果Mac系统,微软Windows系统和Linux系统。

有些经验的同学可能都知道,比如我在Windows下的网易云音乐安装包,在Mac和Linux下是无法安装的,需要另外下载网易云音乐的对应系统的安装包。

而咱们Java口号是“Write Once,Run Anywhere”,具有一次编译,到处运行的特点。

那么如何实现跨平台?跨平台的原理是什么?

主要原因是Java程序在运行时,采用了Java虚拟机(JVM),虚拟机也叫运行时系统。Java编译后生成的是字节码文件(.class)最终由JVM解释并执行。

在不同的操作系统上,只要安装了Java虚拟机,就可以运行同一个Java字节码文件,尽管安装在不同平台上的虚拟机不一样,但是这些虚拟机向计算机解释执行Java字节码的方式是一样的,解释执行的结果也是一样的。虚拟机抹平了不同操作系统之间的差异,从而实现了跨平台的功能。

非跨平台

跨平台

四、Java的特点

(一)面向对象。

Java是一门完全的面向对象语言,万物皆为对象是其核心思想。Java技术提供了一个清晰和高效的面向对象开发平台。

(二)可移植性。

Java具有很好的跨平台性,同一个Java字节码能够在不同的硬件平台和不同的操作系统上执行。可移植性一方面体现在它不依赖操作平台。另一 方面体现在Java规定了基本数据类型的字节长度。不存在不同硬件和操作系统上数据类型不兼容的问题。

(三)可解释性。

Java编译器编译产生的不是可执行代码,而是字节码。字节码是由Java虚拟机执行的高度优化的一系列指令,虚拟机通过解释执行Java字节码。解释字节码是创建具有跨平台性的可移植程序的有效办法。

(四)多线程。

Java的多线程技术提供了构建含有许多并发线程的途径和方法。

知识拓展

JVM:(Java Virtual Machine),Java虚拟机,JVM的作用负责解析运行class文件,保证Java的跨平台。

JRE:(Java Runtime Environment) Java程序的运行时环境,包含了JVM和运行时所需要的核心类库。如果只要运行Java程序,只要安装JRE即可。

JDK:(Java Development Kit) 是Java程序开发工具包,包含JRE和开发人员所用的工具(编译工具javac.exe 运行工具 java.exe)。

JDK、JRE、JVM之间的关系

Java入门到实践系列(1)——Java简介的更多相关文章

  1. Java入门到实践系列(2)——Java环境搭建

    一.上集回顾 在<Java入门到实践系列(1)--Java简介>中提到过,Java程序是运行在Java虚拟机的,也展示过下面这张图. JDK:Java程序开发工具包. JRE:Java运行 ...

  2. Java 理论与实践: 非阻塞算法简介——看吧,没有锁定!(转载)

    简介: Java™ 5.0 第一次让使用 Java 语言开发非阻塞算法成为可能,java.util.concurrent 包充分地利用了这个功能.非阻塞算法属于并发算法,它们可以安全地派生它们的线程, ...

  3. Java 理论与实践: 非阻塞算法简介--转载

    在不只一个线程访问一个互斥的变量时,所有线程都必须使用同步,否则就可能会发生一些非常糟糕的事情.Java 语言中主要的同步手段就是synchronized 关键字(也称为内在锁),它强制实行互斥,确保 ...

  4. java入门学习(1)一简介及其基础特点

    分类: java基础 1.为什么java如此流行,为什么历史选择了它? 因为它拥有全新的编程思想,更接近人们的语言习惯,由于其编译器把代码编译成字节码,然后再不同的平台上运行分别用不同的虚拟机去解释字 ...

  5. Java 理论与实践-非阻塞算法简介

    在不只一个线程访问一个互斥的变量时,所有线程都必须使用同步,否则就可能会发生一些非常糟糕的事情.Java 语言中主要的同步手段就是 synchronized 关键字(也称为内在锁),它强制实行互斥,确 ...

  6. 【Java探索道路安全系列:Java可扩展的安全架构】一间:Java可扩展的安全体系结构开始

    笔者:郭嘉 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell [ ...

  7. 【Java入门提高篇】Day34 Java容器类详解(十五)WeakHashMap详解

    源码详解系列均基于JDK8进行解析 说明 在Java容器详解系列文章的最后,介绍一个相对特殊的成员:WeakHashMap,从名字可以看出它是一个 Map.它的使用上跟HashMap并没有什么区别,所 ...

  8. Java入门第一季——从此投身Java??

    找工作告一段落. 最后的工作呢,和java紧密相关,也是阴差阳错,不过都是软件开发,都好了,不过以后侧重点肯定是在java这边,php有机会还是一直学下去的,那么美的说~ Java开发第一季  一.简 ...

  9. Java入门基础,必读!Java单行、多行和文档注释!

    在编写Java的过程中,我们需要对一些程序进行注释.除了方便自己阅读之外,我们还需要为他人更好地理解我们的程序.因此,我们需要对一些程序进行注释,这些注释可以是编程思想,也可以是程序的作用,可以说是J ...

随机推荐

  1. __FILE__和__DIR__的用法

    dirname(__FILE__)由两部分组成, __FILE__ 魔术变量和 dirname() 函数.__FILE__是当前脚本的绝对路径,通过 dirname() 函数后,就可以获得脚本所在目录 ...

  2. Flask 基础组件(九):请求扩展

    #!/usr/bin/env python # -*- coding:utf-8 -*- from flask import Flask, Request, render_template app = ...

  3. VMWare WorkStation中MacOS虛擬機無法啓動的問題

    關於MacOS虛擬機,在有VMWare重裝,升級以及MacOS更新時,都可能會造成破解補丁失效,因此儅Mac虛擬機無法啓動時,可以嘗試以下操作: 重新運行unlocker208中的win-instal ...

  4. 2.5万字长文简单总结SpringMVC请求参数接收

    这是公众号<Throwable文摘>发布的第22篇原创文章,暂时收录于专辑<架构与实战>.暂定下一篇发布的长文是<图文分析JUC同步器框架>,下一篇发布的短文是&l ...

  5. nginx 信号管理

    本内容只针对nginx 关闭操作罗列方法技巧,不废话直接写,Nginx的信号控制如下: 1. TERM, INT 强制关闭进程 查看nginx进程ps -aux|grep nginx  root  8 ...

  6. git本地创建分支,并提交到github上去

    很多时候,我们再开发的时候需要分支. 那么怎么在本地创建分支,并提交到github或者是远程仓库中呢? 其实很简单: 第一步: git checkout -b dev     创建新的分支 第二步: ...

  7. Windows 磁盘分区后如何再合并&如何用Windows自带工具扩大某个分区

    Windows 磁盘分区后如何再合并&用Windows自带工具扩大某个分区 注:此方法有一定的成功率,更加完善可行的方法请看http://www.diskgenius.cn/help/part ...

  8. Ethical Hacking - POST EXPLOITATION(3)

    Spying - Capturing Key Strikes & Taking Screen Shots Log all mouse/keyboard events > keyscan- ...

  9. two types of friend

    两类朋友 第一类,普通朋友,并不能分享一些隐私的感情,只能说一些事情,有一些只是认识的人或者虽然认识很多年但是也只能是这样的! 第二类,关心你,可以交流感清,明显更加亲密一点. 不要对第一类朋友说第二 ...

  10. mysqldump导出表结构及数据

    问题描述:有需要mysql某几张表的需求,某个数据库某几张表,导出先检查相应的数据库和表是否存在 数据泵用法:默认导出的是表结构以及表中的数据 mysqldump -uroot -p -S /data ...