简介

Java是一种撰写跨平台应用软件的面向对象语言,1995年由Sun Microsystems公司推出。 2009年04月20日,甲骨文74亿美元收购Sun,取得java的版权。 2011年7月28日,甲骨文发布java7.0的正式版。 2014年3月19日,甲骨文公司发布java8.0的正式版。

Java组成部分

(1)Java编程语言

(2)Java文件格式

(3)Java虚拟机(JVM)

(4)Java应用程序接口(Java API)

当编辑并运行一个Java程序时,需要同时涉及到这四种方面。使用文字编辑软件(例如记事本写字板UltraEdit等)或集成开发环境EclipseMyEclipse等)在Java源文件中定义不同的类,通过调用类(这些类实现了Java API)中的方法来访问资源系统,把源文件编译生成一种二进制中间码,存储在class文件中,然后再通过运行与操作系统平台环境相对应的Java虚拟机来运行class文件,执行编译产生的字节码,调用class文件中实现的方法来满足程序的Java API调用。

流程如下:Java-源文件(*.java文件)->Java编译器(javac.exe可执行文件,执行javac命令)->字节码文件(编译后文件,*.class文件)->(类装载器+字节码校验器)->解析器(解析成操作系统识2进制编码格式)->操作系统执行;

Java2平台包括

标准版(J2SE)、企业版(J2EE)和微缩版(J2ME)三个版本。

J2EE是Java 2 enterprise edition是Java的一种企业版用于企业级的应用服务开发(用于java 企业级应用程序开发);

J2SE是Java 2 standard edition是Java的标准版,用于标准的应用开发;(用于java桌面应用程序开发) ;

J2ME是Java 2 Micro Edition是Java的微型版,常用于小型电子设备上如手机上的开发,嵌入式开发等。

J2EE,J2SE,J2ME是java针对不同的的使用来提供不同的服务,也就是提供不同类型的类库。

java运行环境:

Java的平台由两个部分组成:一个是Java Virtual Machine即Java虚拟机JVM,另一部分是Java Application Programming Interface (Java API) 即Java应用程序设计接口,这两部份软件就构成了Java运行的基本的环境。Java API 是一个大的已经做好的软件集合,这个集合里有许多开发时所需要的控件,用来辅助开发。Java API和JVM整合在一起处于机器硬件之上.

java语言特点:

1)面向对象:
现实世界中任何实体都可以看作是对象。在java语言中,也是这样的概念,即,将一切都视为对象,也就是一种比较泛华的概念或者是称谓;
2)可移植性:
编译好的java程序或文件,可通过复制,拷贝到其他系统或者应用程序上,也可解释执行,达到复用的目的,即java语言具有这种可移植性和可复用性;
3)跨平台性:
目前操作系统有WINDOWS、UNIX、Mac OS,linux等,java语言可运行在不同的系统或者平台之上,包括java 的嵌入式,都说明其具有良好的跨平台性;
3)安全性:
1、garbage collection,garbage collector会让你的程序不容易出现内存泄露。GC 垃圾回收机制,会自动释放长时间不再使用的应用程度的系统内存;
2、exception,程序出现exception的时候程序员可以让程序停止运行,这样的话就不会被黑客黑了。
3、指针,JAVA里面没有指针。C的话就非常危险了,黑客可以让C的程序stack overflow, 然后在overflow的内存地址跳到一个不该跳的地方。
4)并发性:
java中存在Thread类,提供了多线程的并发机制;

p.s. 《java基础梳理-朝花夕拾》系列由何东飞根据自己工作几年以来对java的理解梳理而成,笔者闲暇时将持续更新,有不对的地方请各位指教。QQ:983489147

java基础梳理--朝花夕拾(一)的更多相关文章

  1. java基础梳理--朝花夕拾(三)

    1.了解面向对象的编程思想以及面向对象的特性: 对象: EveryThing is Object: 万物皆是对象,在程序中,我们可以将类.接口.方法.属性等都认为是对象: 面向对象: 是一种程序设计方 ...

  2. java基础梳理--朝花夕拾(二)

    1.Java语言语法规则和文件格式: 第一个Java程序:/** 第一个Java程序:控制台输出Hello world!*/public class Test{    //访问修饰符 class关键词 ...

  3. java基础梳理

  4. Java基础梳理(一)

    List和Set比较,各自的子类比较 对比一:Arraylist与LinkedList的比较 1.ArrayList是实现了基于动态数组的数据结构,因为地址连续,一旦数据存储好了,查询操作效率会比较高 ...

  5. java基础知识梳理

    java基础知识梳理 1 基本数据类型

  6. java面试总躲不过的并发(一): 线程池ThreadPoolExecutor基础梳理

    本文核心:线程池ThreadPoolExecutor基础梳理 一.实现多线程的方式 1.继承Thread类,重写其run方法 2.实现Runnable接口,实现run方法 3.实现Callable接口 ...

  7. java后端知识点梳理——java基础

    面向对象 java三大特性 封装: 将事务封装成一个类,达到解耦,隐藏细节的效果.通过get/set等方法,封装了内部逻辑,并保留了特定的接口与外界联系. 继承: 从一个已知的类中派生出一个新的类,新 ...

  8. 黑马程序员——【Java基础】——Java概述

    ---------- android培训.java培训.期待与您交流! ---------- 一.Java语言概述及三大技术架构 1.Java语言概述 Java是SUN公司于1995年推出的一种面向I ...

  9. 【Spring学习】【Java基础回顾-数据类型】

    Java基础回顾过程中,之前对于Java相关基础知识都是从这个人的博客看一些,那边的内容看一下,觉得不够系统化,决定用xmind脑图的形式,将Java基础知识回顾的作为一个系列,当前正在做的会包含: ...

随机推荐

  1. 利用/dev/urandom文件创建随机数

    1:/dev/urandom和/dev/random是什么 这两个文件记录Linux下的熵池,所谓熵池就是当前系统下的环境噪音,描述了一个系统的混乱程度,环境噪音由这几个方面组成,如内存的使用,文件的 ...

  2. STM32F103 ------ 时钟配置

    由于stm32的库默认是外部晶振8M的情况下实现的,所以配置波特率的时候也是按8M,包括主频,如果用12M晶振就需要改动几个地方: 在system_stm32f10x.c中找到相应类型的文件,进行如下 ...

  3. lucene创建索引的几种方式(一)

    什么是索引: 根据你输入的值去找,这个值就是索引 第一种创建索引的方式: 根据文件来生成索引,如后缀为.txt等的文件 步骤: 第一步:FSDirectory.open(Paths.get(url)) ...

  4. maven-compiler-plugin报错

    [INFO] Scanning for projects... [INFO] [INFO] --------------------------< cn.x:credittest >--- ...

  5. 数据库基础SQL知识面试题二

    数据库基础SQL知识面试题二 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.选课系统SQL语法练习 course数据库中有以下四张表: •students表(学生表): si ...

  6. Nginx gzip参数详解及常见问题(已解决)

    1.Nginx gzip功能 Nginx实现资源压缩的原理是通过ngx_http_gzip_module模块拦截请求,并对需要做gzip的类型做gzip,ngx_http_gzip_module是Ng ...

  7. Java lombok插件介绍

    lombok是什么? lombok是一个插件,用途是给你类里面的字段,自动的加上属性,构造器,ToString方法,Equals方法等等 lombok怎么安装? 安装网上一搜一大把,这里有一个Idea ...

  8. SQL Server日志过大,清理日志

    直接执行下面的代码 USE [master] GO ALTER DATABASE 数据库 SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE 数据库 ...

  9. JDBC-DbUtils

    依赖 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns=" ...

  10. Tips and Tricks for Debugging in chrome

    Tips and Tricks for Debugging in chrome Pretty print On sources panel ,clicking on the {} on the bot ...