【译】Java语言速览:StackOverflow

王朝学院·作者佚名  2016-08-27  
宽屏版  字体: 小 | 中 | 大 | 超大  

java(请不要与 JavaScript 搞混) 是一种设计为与 Java 虚拟机 (JVM) 一起使用的多用途编程语言。一般称呼安装了相关工具使其可以开发并运行 Java 程序的电脑系统为 “Java 运行平台”。使用这个标签可以查找有关 Java 编程语言或者 Java 平台工具的问题。

Java 是一种高性能、跨平台、面向对象的编程语言和运行环境。Java 大部分语法起源于 C 和 C++,但是其对象模型简于 C++,并且减少了低级功能。Java 应用均被编译为字节码(被称为class文件),使其可以被 JVM(Java 虚拟机)执行,并独立于不同的电脑体系。JVM 通过一个垃圾收集器(查看 garbage-collection)帮助管理内存,当对象不再使用时可以将其从内存中移除。Java 的系统类型是静态、强类型、安全、声明类型和显式的。Java 支持反射、接口等与 C 和 C++ 相似的功能,例如 JNI(The Java Native Interface)。

Java 被设计为尽可能减少与电脑系统的依赖关系,可以允许应用开发者 “一处编写,处处运行”(WORA):在一个平台上执行的代码不需重新编译就能在其他机器上运行。Java 最初由 James Gosling 在 Sun Mircosystems 公司(2009年4月20日已被Oracle并购)设计,最初是于 1995 年作为 Sun Microsystems公司 Java 运行平台的核心元件发行。

安装工具用于开发和运行 Java 的电脑系统被 Sun(现为 Oracle)命名为 Java 运行平台。各种具有平台特性的工具可以帮助开发者更有效率地使用 Java 程序语言开发。

平台包含两个基本的软件包:

Java 运行环境(JRE):用于运行 Java 应用和程序;

Java 开发工具包(JDK):用于开发 Java 应用和程序。JDK 总是伴随着一个 JRE。在本节中,我们将进一步探讨这两个软件包作为 Java 运行平台的组成部分,其产生的作用。

背景作为参考的大部分 Java 实现方式都是开源的(the OpenJDK),由包括 Oracle,Apple,SAP 与 IBM 在内的大型企业提供支持。

极少的电脑可以直接运行 Java 程序。因此,Java 环境通常要求安装合适的软件组件。在 Windows 系统上,一般可以从 java.com 下载免费的 Java 运行环境(JRE)。在 Macintosh 系统上,当一个应用需要 Java 运行环境时,会在启动时请求用户下载 Java。在类linux系统上,Java 一般通过包管理器安装。

Windows 和 Mac 平台的开发者经常需要额外的工具,使用工具所需的免费 Java 开发包(JDK)必须从 Oracle下载并手动安装。

Java 会被编译为字节码,然后由 JVM 通过编译为原生代码进行解析工作。编译技术为动态编译(JIT)。最初这被视为降低性能的做法,但是随着 JVM 和 JIT 的发展,担忧逐渐减少。在某些情况下,例如当一个旧版本的处理器需要向后兼容时,JVM 甚至快于原生代码编译速度。

注意:也有其他供应商存在,然而大部分都有授权费。对于 linux 和其他平台,请查阅相关的操作系统文档。

版本包含主要的 Java 版本,代号和发行时间:

JDK 1.0 (1996/01/23)

JDK 1.1 (1997/02/19)

J2SE 1.2 [Playground] (1998/12/08)

J2SE 1.3 [Kestrel] (2000/05/08)

J2SE 1.4 [Merlin] (2002/02/06)

J2SE 5.0 [Tiger] (2004/09/30)

Java SE 6 [Mustang] (2006/12/11)

Java SE 7 [Dolphin] (2011/07/28)

Java SE 8 [JSR 337] (2014/03/18)

Java SE 9 [TBD ] (未发布)最新的稳定版本:

Java Standard Edition 8 Update 51 (1.8.0_51) - (2015/07/14)

Java Standard Edition 7 Update 79 (1.7.0_79) - (2015/04/14)更多的代号及发行日期请访问 J2SE Code Names。要查看 JDK 的版本发行日志请访问 Wikipedia 的 Java 版本历史文章。

Java SE 8 正在发行并且可下载。

公共更新的结束日期(以前称为结束生命)为:

J2SE 1.4 - 2008/10

J2SE 5.0 - 2009/10

Java SE 6 - 2013/02

Java SE 7 - 2015/04

Java SE 8 - 2017/09初始帮助你是 Java 初学者或者需要帮助使你的第一个 Java 程序运行?请参看 Oracle Java 教程开始部分。

询问问题前,请使用右上角的搜索栏查找是否已被询问(我们有很多相似的问题),并且阅读《如何提出一个好的问题》,学习怎样吸引 Jon Skeet 回答你的问题。

命名规范Java 程序需要坚持下列的命名规范以提高可读性和降低意外错误出现的可能性。通过遵守这些命名规范,可以使他人阅读你的代码和帮助你时更加轻松。

类型名(类,接口,枚举等等)应以大写字母开头,随后的每个单词首字母大写。例如:String,ThreadLocal和NullPointerException。有时被称为 pascal case(帕斯卡命名法)。

方法名应使用 camelCased(驼峰式命名法),即它们应以小写字母开头,随后的每个单词首字母大写。例如:indexOf,PRintStackTrace,interrupt。

字段名应使用和方法名一样的驼峰式命名法。

常量表达式命名(static final不可变对象)应被写为 ALL_CAPS形式,使用下划线分割每个单词。例如:YELLOW,DO_NOTHING_ON_CLOSE。这同样应用于一个枚举类(Enum)的变量命名。然而,static final修饰可变对象时应使用驼峰式命名。

Hello World - 你的第一个程序Hello World程序的代码为:

public class HelloWorld {

public static void main(String[] args) {

System.out.println("Hello, World!");

}

}

编译和调用Hello world程序:

javac -d . HelloWorld.java

java -cp . HelloWorld

Java 源代码被编译为中间代码形式(针对 Java 虚拟机 的字节码指令),然后可以被java命令执行。

更多信息:Java 维基页面

JDK 维基页面

JRE 维基页面

Oracle 的 Java 下载页面开发Java常用的IDEEclipse IDE

NetBeans IDE

IntelliJ IDEA

Spring Tool Suite(基于 Eclipse,包含用于 Spring 的插件)

JDeveloper IDE

Android Studio(基于 IntelliJ IDEA,主要用于 android 项目开发)

BlueJ初学者资源The Java Tutorials - 从在 Windows/Linux/Mac 上的 scratch 开始,覆盖大部分标准库。

Generics

Coding Bat (Java) - 学习部分基础之后,通过 Coding Bat 磨练和完善你的 Java 技术。

Java 编程规范

Stanford Java 视频课程

Udemy Java 免费课程

Edx 课程:Java 编程导论日常帮助资源Java SE 文档

Java 7 API 参考手册

Java 8 API 参考手册进阶资源Java 语言与虚拟机说明

其他可以在 JVM 上与 Java 混合使用的开发语言免费 Java 编程图书与资源《Linux 开发 Java 应用》(Carl Albing 与 Michael Schwarz 合著,PDF)

《如何像一名电脑科学家一样思考》

《Spring IO Guides》

《The Java EE7 Tutorial》(PDF)

《Java Thin-Client Programming》

《Oracle's Java Tutorials》

《Thinking in Java》

《OSGi in Practice》(PDF)

《Category wise tutorials - J2EE》

《Java Example Codes and Tutorials - J2EE》

《Java Design Pattern Video Training》常见问题人们在 Java 主题下经常询问的问题:

通用:

Java 与Javascript有什么不同

我如何将自己的 Java 程序转换为 .exe 文件环境变量:

在环境变量中设置多种 jar 包String,StringBuilder与toString:

在 Java 中如何比较字符串?

Java 中的 StringBuilder 与 StringBuffer

为什么当我在自己的 Java 项目中打印时得到SomeType@2f92e0f4?

Java 中的字符串常量equals与hashCode:

equals()和==有什么不同

在 Java 中重写equals()和hashCode()方法Java Platform SE API:

使用nextInt()后跳过nextLine()

在 Java 中比较日期

Java:在迭代集合的过程中做高效地删除操作

如何排序Map<Key, Value>中的值

什么时候使用LinkedList<>而不是ArrayList<>

说明Arrays.asList()

HashMap与Hashtable之间的区别泛型:

List<Dog>是List<Animal>的子类吗?为什么 Java 的泛型不支持隐式多态?

Java 泛型:PECS 是什么?

原型是什么?为什么我们不应使用?

如何创建一个泛型数组?类与对象:

Java 是按引用传递的吗?

Javaenum对比public static final字段的类有何优势?

public,protected,private 与 default 之间有什么区别算法与规范:

为什么我不能正确地打印一个 double 类型?

为什么整数做除法运算会返回 0?

Java 的+=操作调试:

NullPointerException是什么,我应该如何修复?

堆栈追踪是什么?我应该如何使用才能调试自己的应用错误?

我应该如何避免检查 null?

为什么会出现NoClassDefFoundError错误?

Java 中的NoSuchMethodErrorThread与多线程:

java.lang.Thread.interrupt()做了什么?

无法通过打印语句查看循环中的变量改变

implements Runnable对比extends Thread与操作系统交互:

为什么Runtime.exec(String)只在一些命令下产生作用?(提交者们,请仅仅列出经常被询问的问题。)

聊天室

Stack Overflow 的 Java 聊天室

java-and-android-era原文链接: stackoverflow

翻译: ImportNew.com - honoka

译文链接: http://www.importnew.com/16689.html

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有