关于 java

Java(请不要与 JavaScript 搞混)是一种设计为与 Java 虚拟机 (JVM) 一起使用的多用途编程语言。一般安装了相关工具可以开发并运行 Java 程序的电脑系统称为 “Java 运行平台”。使用这个标签可以(在StackOverflow上)查找有关 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 实现方式都是开源的(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形式,使用下划线分割每个单词。例如:YELLOWDO_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常用的IDE

初学者资源

日常帮助资源

进阶资源

免费 Java 编程图书与资源

常见问题

人们常问的 Java 问题:

一般问题:

环境变量:

StringStringBuilder 与 toString

equals 与 hashCode

Java Platform SE API:

泛型:

类与对象:

算法与转换:

调试:

Thread 与多线程:

与操作系统交互:

(提交者们,请仅仅列出经常被询问的问题。)

聊天室

原文链接: stackoverflow 翻译: ImportNew.comhonoka
译文链接: http://www.importnew.com/16689.html
转载请保留原文出处、译者和译文链接。]

关于作者: honoka

Java语言速览:StackOverflow的更多相关文章

  1. 【译】Java语言速览:StackOverflow

    Java (请不要与 JavaScript 搞混) 是一种设计为与 Java 虚拟机 (JVM) 一起使用的多用途编程语言.一般称呼安装了相关工具使其可以开发并运行 Java 程序的电脑系统为 &qu ...

  2. 考试应对(Java语法速览)

    1.从命令行输入数据 格式:Scanner reader=new Scanner(System.in); 此reader对象可以使用的方法:nextBoolean(),nextByte(),nextS ...

  3. P1162_填涂颜色(JAVA语言)(速看!全洛谷最暴力解法!QAQ)

    思路:看了看数据n<=30,于是我们可以暴力求解(主要是BFS学的不咋地~2333).枚举每个0的位置,看上下左右四个方向上是否都有1.都有1的话说明被1包围,即在闭合圈的内部,开个数组标记一下 ...

  4. 快看Sample代码,速学Swift语言(1)-语法速览

    Swift是苹果推出的一个比较新的语言,它除了借鉴语言如C#.Java等内容外,好像还采用了很多JavaScript脚本里面的一些脚本语法,用起来感觉非常棒,作为一个使用C#多年的技术控,对这种比较超 ...

  5. 用 Java 写个塔防游戏「GitHub 热点速览 v.21.37」

    作者:HelloGitHub-小鱼干 本周 GitHub Trending 的主题词是:多语言.本周特推的 C 语言教程是大家都知道的阮一峰编写的,想必和他之前的技术文章类似,能起到科普作用.再来时 ...

  6. 造!又有新的生产力语言了「GitHub 热点速览 v.22.30」

    作者:HelloGitHub-小鱼干 你还记得那些 PHP 开发都去哪了吗?转 Golang 了!移动端现在流行什么?Flutter 编程.现在谷歌带着新的生产力语言来了,Carbon,代号:C++ ...

  7. .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验

    不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家 ...

  8. 获取 Windows 密码「GitHub 热点速览 v.21.28」

    作者:HelloGitHub-小鱼干 安全问题一直是 GitHub 的一大热点,因为数据安全问题诞生的各类自托管服务便是.而本周周榜上的 2 个和安全主题相关的项目,有些不同.mimikatz 是个老 ...

  9. AI 预测蛋白质结构「GitHub 热点速览 v.21.29」

    作者:HelloGitHub-小鱼干 虽然 AI 领域藏龙卧虎,但是本周预测蛋白质结构的 alphafold 一开源出来就刷爆了朋友圈,虽然项目与我无关,但是看着科技进步能探寻到生命机理,吃瓜群众也有 ...

随机推荐

  1. SSH架构简单总结

    Struts.spring.Hibernate在各层的作用 1)struts 负责 web层.    ActionFormBean 接收网页中表单提交的数据,然后通过Action 进行处理,再Forw ...

  2. sql快捷键

    请柬:https://msdn.microsoft.com/zh-cn/library/ms174205.aspx

  3. highcharts 柱状图

    <!doctype html> <html lang="en"> <head> <script type="text/javas ...

  4. socket编程中write、read和send、recv之间的区别

    http://blog.csdn.net/petershina/article/details/7946615 一旦,我们建立好了tcp连接之后,我们就可以把得到的fd当作文件描述符来使用. 由此网络 ...

  5. SPRING IN ACTION 第4版笔记-第九章Securing web applications-009-拦截请求()

    一. 对特定的请求拦截 For example, consider the requests served by the Spittr application. Certainly, thehome ...

  6. svn merge部分的详细说明

    http://blog.sina.com.cn/s/blog_620eb3b20101hvz7.html 解决版本冲突-使用SVN主干与分支功能 1  前言 大多数产品开发存在这样一个生命周期:编码. ...

  7. JS动画 | 用TweenMax实现收集水滴效果

    之前在CodePen上接触了TweenMax, 被它能做到的酷炫效果震撼了. (文末放了5个GSAP的效果GIF) 最近要做一个"收集水滴"的动效, 于是就试用了一下TweenMa ...

  8. Statement和PreparedStatement的特点 MySQL数据库分页 存取大对象 批处理 获取数据库主键值

    1 Statement和PreparedStatement的特点   a)对于创建和删除表或数据库,我们可以使用executeUpdate(),该方法返回0,表示未影向表中任何记录   b)对于创建和 ...

  9. 摄像头(4)用Camera和SurfaceView自定义拍照程序

    定制拍照程序的基本步骤 1,打开照相机:Camera.open 这是独占方式打开的 2,创建SurfaceView对象 多缓冲,多线程view 3,添加回调事件监听器(SurfaceHolder.ad ...

  10. linux系统中删除文件夹

    rm -rf 文件夹的名称 rm-r 文件名称