java教程系列一:什么是Java语言?
海上生明月,天涯共此时。

Java是一种通用的计算机编程语言,它具有卓越的通用性、高效性、平台移植性和安全性。它旨在让应用程序开发人员“write once, run anywhere”(WORA),这意味着编译的Java代码可以在支持Java的所有平台上运行,而无需重新编译。
例如,你可以在UNIX上编写和编译Java程序,并在Microsoft Windows,Macintosh或UNIX计算机上运行它,而无需对源代码进行任何修改。WORA是通过将Java程序编译成称为字节码的中间语言来实现的。字节码的格式与平台无关。称为Java虚拟机(JVM)的虚拟机用于在每个平台上运行字节码。

Java的历史
Java最初是由Sun Microsystems的James Gosling开发的(后来被Oracle Corporation收购),并于1995年作为Sun Microsystems Java平台的核心组件发布。该语言的大部分语法来自C和C ++,但它比它们任何一种都简单易学。
在2010年1月27日收购Sun Microsystems之后,Oracle Corporation成为Java SE平台官方实施的当前所有者。此实现基于Sun最初的Java实现。Oracle实施适用于Microsoft Windows,Mac OS X,Linux和Solaris。
Oracle实现打包成两个不同的发行版:
Java运行时环境(JRE),包含运行Java程序所需的Java SE平台部分,面相大多数用户。Java Development Kit(JDK),面向软件开发人员,包括Java编译器,Javadoc,Jar和调试器等开发工具。
垃圾回收
Java使用自动垃圾收集器来管理对象在内存中的生命周期 。程序员只需要确定何时创建对象,并且Java运行时负责在对象不再使用时恢复内存。一旦没有对对象的引用,无法访问的内存就有资格被垃圾收集器自动释放。
如果程序员的代码保存对不再需要的对象的引用,则通常会发生类似于内存泄漏的事情,通常是当不再需要的对象存储在仍在使用的容器中时。如果调用不存在的对象的方法,则抛出“NullPointerException”。
垃圾收集可能随时发生。理想情况下,它会在程序空闲时发生。如果堆上的可用内存不足以分配新对象,则可以保证触发;这可能导致程序暂时失速。Java中不可能进行显式内存管理。
Java Hello world
传统的“Hello,world!”程序可以用Java编写:
public class HelloWorldApplication {
public static void main(String[] args) {
System.out.println("Hello World!"); // Prints Hello World! to the console.
}
}
Java类文件
Java源文件必须以它们包含的公共类命名,并附加后缀.java,例如HelloWorldApplication.java。- 必须首先使用
Java编译器将其编译为字节码,从而生成名为HelloWorldApplication.class的文件。只有这样才能执行或“启动”。 - Java源文件可能只包含一个公共类,但它可以包含多个不具有公共访问权限的类和任意数量的公共内部类。
- 当源文件包含多个类时,请将一个类设置为
“public”,并使用该公共类名称命名源文件。

java教程系列一:什么是Java语言?的更多相关文章
- Java 并发系列之十:java 并发框架(2个)
1. Fork/Join框架 2. Executor框架 3. ThreadPoolExecutor 4. ScheduledThreadPoolExecutor 5. FutureTask 6. t ...
- Java 并发系列之九:java 原子操作类Atomic(13个)
1. 原子更新基本类型类 2. 原子更新数组 3. 原子更新引用 4. 原子更新属性 5. txt java 原子操作类Atomic 概述 java.util.concurrent.atomic里的原 ...
- Java 并发系列之二:java 并发机制的底层实现原理
1. 处理器实现原子操作 2. volatile /** 补充: 主要作用:内存可见性,是变量在多个线程中可见,修饰变量,解决一写多读的问题. 轻量级的synchronized,不会造成阻塞.性能比s ...
- Java入门系列(七)Java 集合框架(JCF, Java Collections Framework)
Java 集合概述 List.Set.Map可以看做集合的三大类 java集合就像一个容器,可以将多个对象的引用丢进该容器中. Collection和Map是java集合的根接口. List List ...
- java教程系列二:Java JDK,JRE和JVM分别是什么?
多情只有春庭月,犹为离人照落花. 概述 本章主要了解JDK,JRE和JVM之间的区别.JVM是如何工作的?什么是类加载器,解释器和JIT编译器.还有一些面试问题. Java程序执行过程 在深入了解Ja ...
- 死磕 java同步系列之JMM(Java Memory Model)
简介 Java内存模型是在硬件内存模型上的更高层的抽象,它屏蔽了各种硬件和操作系统访问的差异性,保证了Java程序在各种平台下对内存的访问都能达到一致的效果. 硬件内存模型 在正式讲解Java的内存模 ...
- Java虚拟机系列(一)---Java内存划分
Java和C++之间有一堵由内存管理和垃圾收集技术所围成的“高墙”,墙外的人想进去,墙内的人却想出来. ------摘自<深入理解Java虚拟机> 作为一个Java程序员,因为虚拟机的好 ...
- Java基础系列(2)- Java开发环境搭建
JDK下载与安装 安装JDK 1.百度搜素JDK8,找到下载地址 2.下载电脑对应的版本 3.双击安装JDK 4.记住安装的路径,可以自定义,默认路径如图 卸载JDK 删除Java安装目录 删除环境变 ...
- Java入门系列(十)Java IO
概述 总体而言,java的读写操作又分为两种:字符流和字节流. 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件. 什么是流? ...
随机推荐
- JVM调优之经验
在生产系统中,高吞吐和低延迟一直都是JVM调优的最终目标,但这两者恰恰又是相悖的,鱼和熊掌不可兼得,所以在调优之前要清楚舍谁而取谁.一般计算任务和组件服务会偏向高吞吐,而web展示则偏向低延迟才会带来 ...
- Spring Boot 中的同一个 Bug,竟然把我坑了两次!
真是郁闷,不过这事又一次提醒我解决问题还是要根治,不能囫囵吞枣,否则相同的问题可能会以不同的形式出现,每次都得花时间去搞.刨根问底,一步到位,再遇到类似问题就可以分分钟解决了. 如果大家没看过松哥之前 ...
- cs231n---强化学习
介绍了基于价值函数和基于策略梯度的两种强化学习框架,并介绍了四种强化学习算法:Q-learning,DQN,REINFORCE,Actot-Critic 1 强化学习问题建模 上图中,智能体agent ...
- go 学习笔记之数组还是切片都没什么不一样
上篇文章中详细介绍了 Go 的基础语言,指出了 Go 和其他主流的编程语言的差异性,比较侧重于语法细节,相信只要稍加记忆就能轻松从已有的编程语言切换到 Go 语言的编程习惯中,尽管这种切换可能并不是特 ...
- EF获取DataTable的扩展方法GetDataSet
微软的EF至今已到了EF6版本了,但是,不知道微软咋想的,至今也不支持直接从数据库获取一张数据表DataTable,但这个DataTable在许多情况下还是比确定的实体化类更方便好使,这里,我仿照微软 ...
- 分布式任务队列--Celery的学习笔记
一.Celery简介 Celery是一个简单,灵活,可靠的分布式系统,用于处理大量消息,同时为操作提供维护此类系统所需的工具.它是一个任务队列,专注于实时处理,同时还支持任务调度. 所谓任务队列,是一 ...
- 新手学习selenium路线图(老司机亲手绘制)
前言: 最近群里有不少小白,想入手selenium,但是一直没找到学习路线,还没入门就迷路了,于是小编亲手绘制了一幅学习路线图.希望能帮助小白快速入门,帮助已经入门的,尽快提升! 学习selenium ...
- Guava 常用工具类
引入guava包: <dependency> <groupId>com.google.guava</groupId> <artifactId>guava ...
- Flink快速入门--安装与示例运行
flink是一款开源的大数据流式处理框架,他可以同时批处理和流处理,具有容错性.高吞吐.低延迟等优势,本文简述flink在windows和linux中安装步骤,和示例程序的运行. 首先要想运行Flin ...
- HandlerMethodArgumentResolver(二):Map参数类型和固定参数类型【享学Spring MVC】
每篇一句 黄金的导电性最好,为什么电脑主板还是要用铜? 飞机最快,为什么还有人做火车? 清华大学最好,为什么还有人去普通学校? 因为资源都是有限的,我们现实生活中必须兼顾成本与产出的平衡 前言 上文 ...