stackoverflow中关于java的中文介绍

关于java的信息

Java(不要与JavaScript或JScript或JS混淆)是一种通用的,静态类型的,面向对象的编程语言,旨在与Java虚拟机(JVM)结合使用。“Java平台”是已安装用于开发和运行Java程序的工具的计算系统的名称。将此标记用于涉及Java编程语言或Java平台工具的问题。

Java的是高层次的,与平台无关的,面向对象,函数编程语言和运行时环境。

Java语言的大部分语法来自C和C ++,但它的对象模型比后者更简单,并且它的低级设施更少。Java应用程序通常编译为字节码(称为类文件),可由JVM(Java虚拟机)执行,与计算机体系结构无关。JVM通常会进一步将代码编译为本机机器代码以优化性能。

JVM在垃圾收集器的帮助下管理内存(请参阅垃圾收集),以便在对象不再使用时处理从内存中删除对象。Java的打字规则是静态的,强大的,安全的,主格的和清晰的。Java支持通过JNI(Java Native Interface)反射和与C和C ++接口等功能。

Java旨在实现尽可能少的实现依赖性,旨在允许应用程序开发人员编写一次,在任何地方运行,或者有时编写一次,在任何地方运行(在一个平台上执行的代码不需要重新编译以在另一个平台上运行)。Java最初由Sun Microsystems 的James Gosling开发(于2010年1月27日与Oracle Corporation完全合并),并于1995年作为Sun Microsystems Java平台的核心组件发布。Java于1991年6月由James Gosling作为一个名为“Oak”的项目启动。

在Java平台是由Sun(现在是Oracle)提供给计算已安装的工具,用于开发和运行Java程序的系统的名称。该平台具有各种工具,可以帮助开发人员有效地使用Java编程语言。

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

Java运行时环境(JRE):运行 Java应用程序和applet所必需的。
Java Development Kit(JDK):开发 Java应用程序和applet所必需的。JDK附带一个JRE。
在本节中,我们将进一步详细探讨Java平台的这两个软件组件的作用。

背景
Java的主要参考实现是开源(OpenJDK),并得到包括Oracle,Apple,SAP和IBM在内的主要公司的支持。

很少有计算机可以直接运行Java程序。因此,通常通过安装合适的软件组件来使Java环境可用。在Windows计算机上,这通常是通过下载免费的Java Runtime Environment(Java.com中的 JRE)来完成的。在Macintosh计算机上,当需要启动Java的应用程序时,系统会提示用户下载Java。在类似Linux的系统上,Java通常是通过包管理器安装。

开发人员经常需要其他工具,这些工具可以在免费的Java开发工具包中找到,Windows和Mac必须从Oracle下载并手动安装。

Java被编译成字节码,然后由JVM编译成本机机器代码。编译是在即时(JIT)中完成的。这最初被视为性能损失,但JVM和JIT编译的改进使这一点不再受到关注。在某些情况下,出于向后兼容的原因,JVM甚至可能比编译为针对旧版本处理器的本机代码更快。从Java 9开始,它可以提前编译(AOT)。

注意:存在其他供应商,但几乎所有供应商都有许可费。对于Linux和其他平台,请参阅操作系统文档。

版本
值得注意的Java版本,代码名称(在[]括号中)和发布日期(在括号中)包括:

Java SE 12 [JSR 386] (March 19, 2019)
Java SE 11 [JSR 384] (September 25, 2018)
Java SE 10 [JSR 383] (March 20, 2018)
Java SE 9 [JSR 376] (September 21, 2017)
Java SE 8 [JSR 337] (March 18, 2014)
Java SE 7 [Dolphin] (July 28, 2011)
Java SE 6 [Mustang] (December 11, 2006)
J2SE 5.0 [Tiger] (September 30, 2004)
J2SE 1.4 [Merlin] (February 6, 2002)
J2SE 1.3 [Kestrel] (May 8, 2000)
J2SE 1.2 [Playground] (December 8, 1998)
JDK 1.1 (February 19, 1997)
JDK 1.0 (January 23, 1996)
JDK Beta (1995)
最新的稳定版本:

Java Standard Edition 12 (12.0.1) - (April 16, 2019)
Java Standard Edition 11 (11.0.2) - (January 15, 2019)
Java Standard Edition 10 (10.0.2) - (July 17, 2018)
Java Standard Edition 9 (9.0.4) - (January 16, 2018)
Java Standard Edition 8 Update 212 (1.8.0_212) - (April 16, 2019)
Java Standard Edition 7 Update 80 (1.7.0_80) - (April 14, 2015)
有关更多代码名称和发布日期,请访问J2SE代码名称。要查看每个JDK版本的发行说明,请访问有关Java版本历史的Wikipedia文章。

Java SE 可供下载。

该公用更新结束(以前称为寿命结束,也被称为EOPU)日期从甲骨文免费提供的分布是:

Java SE 12 - September 2019 for OpenJDK
Java SE 11 - At least September 2022 for AdoptOpenJDK
Java SE 10 - September 2018
Java SE 9 - March 2018
Java SE 8 - January 2019 (commercial user) | December 2020 (personal user)
Java SE 7 - Apr 2015
Java SE 6 - Feb 2013
J2SE 5.0 - Oct 2009
J2SE 1.4 - Oct 2008
初步帮助
Java新手或需要帮助才能运行第一个Java程序?请参阅“ 入门”中的“ Oracle Java教程”部分。

在提出问题之前,请先搜索一下是否有问题(我们有许多重复,有些在下面列出的常见问题解答),并阅读写完善问题以了解如何让Jon Skeet回答您的问题。

命名约定
Java程序应遵循以下命名约定,以提高可读性并减少意外错误的可能性。通过遵循这些命名约定,您可以更轻松地让其他人理解您的代码并为您提供帮助。

类型名称(类,接口,枚举等)应以大写字母开头,并将每个后续单词的首字母大写。例子包括:String,ThreadLocal,和NullPointerException。这有时称为PascalCase。
方法和字段名称应该是camelCased; 也就是说,它们应以小写字母开头,并将每个后续单词的第一个字母大写。例如:indexOf,printStackTrace,interrupt。
常量表达式名称(static final不可变对象)应该写在ALL_CAPS_SNAKE_CASE中,下划线分隔每个单词。例子:YELLOW,DO_NOTHING_ON_CLOSE。这也适用于Enum类的值。但是,static final对非可变对象的引用应该是camelCased。
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的IDE
Eclipse IDE(eclipse)
在线运行Java代码
NetBeans IDE(netbeans)
IntelliJ IDEA(intellij-idea)
Spring Tool Suite(基于Eclipse的spring-tool-suite,包含使用Spring的工具)
JDeveloper IDE(jdeveloper)
Android Studio(基于IntelliJ IDEA的android-studio,主要用于处理Andriod项目)
BlueJ(bluej)
ideone - 具有其他流行语言支持的在线IDE。
Sublime Text(sublimetext)
初学者的资源
Java教程 - 在Windows / Linux / Mac上从头开始,涵盖了大部分标准库。Oracle 的Java关键字参考列表非常好地补充了Java教程。
泛型
Codecademy(Java) - 学习编程的基础知识。
编码蝙蝠(Java) - 在学习了一些基础知识后,使用Coding Bat优化和磨练您的Java技能。
Java编程语言的代码约定
斯坦福Java视频讲座
Udemy关于Java的免费课程
Edx关于Java计算简介的课程
关于Java的Coursera课程
日常更新资源
Java SE文档
Java 7 API参考
Java 8 API参考
Java 9 API参考
Java 10 API参考
Java 11 API参考
Java 12 API参考
高级资源
Java语言和虚拟机规范
可以在JVM上与Java混合使用的其他语言
Java指南8
Angelika Langer 的 Definitive Java Generics Advanced FAQ
Java框架,库和软件
令人敬畏的Java框架,库和软件列表。
有用的Java链接
Java编程书籍和资源
Carl Albing和Michael Schwarz在Linux上进行Java应用程序开发(PDF)
如何像计算机科学家一样思考
Spring IO指南
首先是Java
Java EE 7教程(PDF)
Java瘦客户端编程
Oracle的Java教程
用Java思考
有效的Java(PDF)
有效的Java第3版
OSGi实践(PDF)
类别明智的教程 - J2EE
Java示例代码和教程 - J2EE
Java设计模式视频培训
代码搜索Java示例
全球Java交叉引用引擎
Java 101教程
Java EE 8教程项目
经常问的问题
人们经常会问以下Java主题:

一般:

Java和JavaScript之间的区别。
如何将我的java程序转换为.exe文件
类路径:

在类路径中设置多个jar。
String,StringBuilder和toString:

如何比较Java中的字符串?
StringBuilder和StringBuffer之间的区别
SomeType@2f92e0f4打印物体时为什么会出现?
Java中字符串的不变性
equals并且hashCode:

equals()和之间的区别==
重写equals()和hashCode()
Java Platform SE API:

nextLine()使用后跳绳nextInt()
比较日期
在java.util.Date和java.time.LocalDate之间转换
迭代集合时删除项目,避免ConcurrentModificationException
如何Map<Key,Value>在Java中对值进行排序?
什么时候LinkedList结束ArrayList?
Arrays.asList()
HashMap与Hashtable?之间的差异?
集和列表之间的区别?
泛型:

什么是Java中意味着什么?
是List子类List吗?为什么Java的泛型不是隐式多态的(为什么不是集合协变)?
Java Generics:什么是PECS?
什么是原始类型,为什么我们不应该使用它?
如何创建通用数组?
如何实例化泛型类型变量
类和对象:

Java是否通过引用传递?
Java枚举与具有公共静态最终字段的类相比有什么优势?
public,protected,private和default之间的区别
算术和转换:

为什么我不能正确打印双面?
整数除法返回0
Java的+ =, - =,* =,/ =复合赋值运算符
调试:

什么是堆栈跟踪,如何使用它来调试应用程序错误?
什么是NullPointerException,我该如何解决?
什么是ArrayIndexOutOfBoundsException,我该如何预防呢?
如何避免空检查?
我为什么得到一个NoClassDefFoundError?
我为什么得到一个NoSuchMethodError?
Thread 和多线程:

怎么java.lang.Thread.interrupt()办?
while循环没有看到更改的值,除非其中有print语句
implements Runnable 与 extends Thread
与操作系统交互:

为什么要Runtime.exec(String)为某些命令而不是所有命令工作?
(编辑,请只列出这实际上问题是常见的。)

聊天室
Stack Overflow聊天室为Java
Stack Overflow聊天室:Java和Android时代
Java的Gitter聊天室

来源于:https://stackoverflow.com/tags/java/info

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值