Java——认识Java

news2024/11/17 6:24:21

一、介绍

1、起源

Java 是由 Sun Microsystems 于 1995 年推出的一种面向对象的编程语言和计算平台。由詹姆斯·高斯林(James Gosling,后来被称为Java之父)和他的同事们共同研发。后来,Sun 公司被 Oracle(甲骨文)公司收购,Java 也随之成为 Oracle 公司的产品。

Java最开始叫 Oak(橡树)语言,由Sun公司(后来被Oracle收购)成立的技术小组开发,由于 oak 在当时已被注册,所以改名为 Java。这个名字的由来也是一个很有趣的小故事,说是有一天团队的几个主要成员在一起喝咖啡,正品尝一种来自爪哇岛(Java)的咖啡。这个名字的灵感就来源于这个来自爪哇岛的咖啡。Java的图标也是一杯咖啡,同样也是因为这个。

Sun公司在1995 年正式发布了JDK1.0。詹姆斯·高斯林(James Gosling)在1994年参加硅谷大会,展示了Java的功能,震惊世界。

2、简要介绍

Java分为三个体系:

  • JavaSE(J2SE)(Java2 Platform Standard Edition,java平台标准版)
  • JavaEE(J2EE) (Java 2 Platform,Enterprise Edition,java平台企业版)
  • JavaME(J2ME) (Java 2 Platform Micro Edition,java平台微型版)。

后来里的J2SE、J2EE和J2ME中的2被去掉,变成了现在的JavaSE、JavaEE和JavaME。

二、特点

简单性:

  • 语法类似于 C 和 C++,便于学习和上手。
  • 丢弃了 C++ 中复杂且不常用的特性(如操作符重载、多继承等)。
  • 不使用指针,而使用引用,简化内存管理。以及提供了自动分配和回收内存空间。

面向对象(OOP Object-Oriented):

  • 提供类、接口和继承等支持,只支持类之间的单继承,但支持接口的多继承。
  • 全面支持动态绑定,使得程序更加灵活和可扩展。

分布式:

  • 支持网络应用开发,提供了丰富的网络编程接口,如 URL、Socket 等。
  • 具备 RMI(Remote Method Invocation)机制,支持分布式应用开发。

健壮性:

  • 强类型机制、异常处理和自动垃圾回收等特性保证了程序的健壮性。
  • 安全检查机制进一步增强了代码的可靠性。

安全性

  • 提供了多层次的安全机制,防止恶意代码的攻击。
  • 通过 ClassLoader 和 SecurityManager 实现动态的安全防护。

体系结构中立或跨平台性:

  • Java 程序(后缀为 .java 的文件)在 Java 平台上被编译为体系结构中立的字节码格式(后缀为 .class 的文件),然后可以在实现这个 Java 平台的任何系统中运行。也就是我们常说的“一次编译,到处运行”。
  • 那这种特性是怎么实现的呢,实际上就是依靠Java虚拟机(JVM,Java Virtual Machine)。它的主要功能是运行 Java 字节码。JVM 提供了一个抽象计算机模型,使得 Java 程序能够在各种不同的硬件和操作系统上运行,从而实现了“一次编译,到处运行”的跨平台特性。每个平台(如 Windows、Linux、macOS 等)都有不同的 JVM 实现。每个平台的 JVM 实现都是根据特定平台的需求进行优化的,但它们都能够运行相同的 Java 字节码。所以一个.class文件可以在不同平台下运行。

可移植性

  • Java 严格规定了基本数据类型的长度,确保代码在不同平台上具有一致的表现。
  • Java 编译器和运行环境具有很强的可移植性。Java 系统本身也具有很强的可移植性,Java 编译器是用 Java 实现的,Java 的运行环境是用 ANSI C 实现的。

解释型

  • Java是解释型语言。
  • Java这个解释型语言编译后得到的字节码,不能直接在机器上运行,需要通过解释器来运行。而对于编译型语言,编译后得到的是机器码,可以直接在机器上运行。

高性能

  • 虽然是解释型语言,但通过 JIT(Just-In-Time)编译器技术,Java 的运行速度接近于原生编译语言如 C++。

多线程

  • Java 内置多线程支持,可以方便地编写并发程序。
  • 提供了线程同步机制(如 synchronized 关键字)来避免资源竞争。

动态性

  • 类可以在运行时动态加载和链接,适应动态变化的环境。
  • 支持运行时的类型检查和反射机制。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1697764.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【list】list库介绍 + 简化模拟实现

本节博客先对list进行用法介绍,再在库的基础上简化其内容和形式,简单进行模拟实现,有需要借鉴即可。 目录 1.list介绍1.1 list概述1.2相关接口的介绍 2.简化模拟实现3.各部分的细节详述3.1结点3.2迭代器细节1:迭代器用原生指针还是…

【动态规划】斐波那契数列模型(C++)

目录 1137.第N个泰波那契数 解法(动态规划) 算法流程 1. 状态表⽰: 2. 状态转移⽅程: 3. 初始化: 4. 填表顺序: 5. 返回值: C算法代码 优化: 滚动数组 测试: …

电脑提示请重新安装软件MSVCP140.dll的几种解决方法分享

在日常使用电脑的过程中,我们常常会遇到一些错误提示,其中之一就是找不到msvcp140.dll文件,导致软件无法正常启动运行。这个问题可能是由于缺少相应的依赖库或者版本不匹配引起的。下面我将介绍5种解决方法,帮助大家解决这个问题。…

0524_网络编程8

思维导图:

Java基础的语法---StringBuilder

StringBuilder 构造方法 StringBuilder():创建一个空的StringBuilder实例。 StringBuilder(String str):创建一个StringBuilder实例,并将其初始化为指定的字符串内容。 StringBuilder(int a): 创建一个StringBuilder实例…

数据结构--《二叉树》

二叉树 1、什么是二叉树 二叉树(Binar Tree)是n(n>0)个结点的优先集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两颗互不相交的、分别称为根结点的左子树和右子树的二叉树构成。 这里给张图,能更直观的感受二叉树&#xff1…

AJAX初级

AJAX的概念: 使用浏览器的 XMLHttpRequest 对象 与服务器通信 浏览器网页中,使用 AJAX技术(XHR对象)发起获取省份列表数据的请求,服务器代码响应准备好的省份列表数据给前端,前端拿到数据数组以后&#xf…

手把手教学,一站式教你实现服务器(Ubuntu)Anaconda多用户共享

背景:书接上回,一站式安装Ubuntu及配置服务器手把手教学,一站式安装ubuntu及配置服务器-CSDN博客 在安装及配置好服务器后,因为课题组可能涉及多个用户共用一台服务器,为了防止服务器上代码误删和Anaconda环境管理混乱…

js之图表使用

今天为了给大家演示图表的使用,今天展示下切换图形的修改属性快速修改 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><script src"./js/jquery-3.7.1.js"></script><script src…

Android 使用 adb 列出设备上所有危险权限

步骤1&#xff1a;确定 Android SDK 位置 打开 Android Studio 的设置&#xff0c;并来到 Languages & Frameworks › Android SDK 处&#xff1a; 这里可以看到 Android SDK 目录的位置&#xff1a; 例如&#xff1a;/Users/admin/Library/Android/sdk。 复制这个路径&am…

RAG概述(一):RAG架构的演进

目录 概述 RAG核心步骤 Indexing索引 Retrieval检索 Generation生成​​​​​​​ Native RAG Advanced RAG Modular RAG 参考 概述 RAG&#xff1a;Retrieval-Augmented Generation 检索增强生成。 RAG通过结合LLMs的内在知识和外部数据库的非参数化数据&#xff…

区间合并-leetcode合并石头的最低成本-XMUOJ元素共鸣:深层次的唤醒

题目 思路 话不多说&#xff0c;直接上代码 附上INT_MAX和INT_MIN 【C】详解 INT_MAX 和 INT_MIN&#xff08;INT_MAX 和 INT_MIN是什么&#xff1f;它们的用途是什么&#xff1f;如何防止溢出&#xff1f;&#xff09;_c int max-CSDN博客 代码 /* leetcode合并石头的最低…

未授权访问:Hadoop 未授权访问漏洞

目录 1、漏洞原理 2、环境搭建 3、未授权访问 4、通过REST API命令执行 防御手段 今天继续学习各种未授权访问的知识和相关的实操实验&#xff0c;一共有好多篇&#xff0c;内容主要是参考先知社区的一位大佬的关于未授权访问的好文章&#xff0c;还有其他大佬总结好的文章…

【机器学习数据可视化-07】波士顿房价预测数据分析

波士顿房价预测&#xff1a;基于数据可视化的深入探索 一、引言   在当今社会&#xff0c;房地产市场作为经济的重要支柱之一&#xff0c;其走势与波动直接影响着国家经济的稳定和人民生活的品质。波士顿&#xff0c;这座历史悠久且充满活力的城市&#xff0c;其房地产市场一…

ElasticSearch学习篇12_《检索技术核心20讲》基础篇

背景 学习极客实践课程《检索技术核心20讲》https://time.geekbang.org/column/article/215243 课程分为基础篇、进阶篇、系统案例篇 主要记录企业课程学习过程课程大纲关键点&#xff0c;以文档形式记录笔记。 内容 检索技术&#xff1a;它是更底层的通用技术&#xff0c…

如何用bet快速创建文件夹多个同级文件夹,多层子文件夹

第一种用txt编辑&#xff0c;保存格式改为bat 运行即可 md用来创建文件夹 md空格文件夹名字 或者 md空格文件夹名字\子文件夹名字 第一个创建一个文件夹&#xff0c;或者多个同级文件夹用空格隔开或者用,英文逗号隔开 md 00 md 00 md 11 md 22 md 33 或者 md 00 1…

Python 中别再用 ‘+‘ 拼接字符串了!

当我开始学习 Python 时&#xff0c;使用加号来连接字符串非常直观和容易&#xff0c;就像许多其他编程语言&#xff08;比如Java&#xff09;一样。 然而&#xff0c;很快我意识到许多开发者似乎更喜欢使用.join()方法而不是。 在本文中&#xff0c;我将介绍这两种方法之间的…

Charles抓包App_https_夜神模拟器

Openssl安装 下载安装 下载地址&#xff1a; http://slproweb.com/products/Win32OpenSSL.html 我已经下载好了64位的&#xff0c;也放出来&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1Nkur475YK48_Ayq_vEm99w?pwdf4d7 提取码&#xff1a;f4d7 --来自百度网…

Golang实现文件复制

方法&#xff1a;三种 package zdpgo_fileimport ("errors""io""os" )// CopyFile 使用io.Copy进行文件的复制&#xff0c;同时也会复制文件的所有权限 // param src 复制文件 // param des 目标文件 // return error 错误信息 func CopyFile(s…

MacOS安装Docker-Compose

方法一 按照百度的方法进行安装&#xff0c;我大致复制一下百度的方法 1.确保您已经安装了Docker Desktop。 2.下载Docker Compose二进制文件。 3.将二进制文件移动到/usr/local/bin目录。 4.更改二进制文件的权限&#xff0c;使其可执行。 以下是具体的命令&#xff1a;…