Java基础入门篇——Java虚拟机和运行环境(一)

目录

一、Java的发展简史和语言特点

1.1发展简史:

1.2语言特点:

二、Java运行机制

三、Java虚拟机

四、Java的运行环境

五、第一个Java程序——HelloWorld! 

六、总结 


一、Java的发展简史和语言特点

Java是一种广泛使用的编程语言,具有丰富的发展历史和特点。以下是Java的发展简史和语言特点的概述:

1.1发展简史:

  • Java语言的发展始于1991年,由Sun Microsystems(现为Oracle Corporation)的项目“Green”开始,目的是为了开发智能家电设备的编程语言。
  • 最初的Java语言是作为一种用于嵌入式系统的面向对象语言设计的,然而,由于网络的出现和发展,Java在1995年迅速转向网络应用领域。
  • 在1995年的JavaOne大会上,Sun发布了Java编程语言和Java技术的初版,并在随后几年中不断完善和推广。
  • 2006年,Sun Microsystems发布了开放源代码的Java平台,称为OpenJDK,进一步推动了Java的发展。
  • 自那时以来,Java一直保持着持续的发展和更新,不断推出新的版本和功能,包括Java SE(标准版)、Java EE(企业版)和Java ME(微型版)。

1.2语言特点:

  1. 简单易学:Java的语法相对简单和易于理解,其设计目标之一是提供一种与C++相似但更简单易学的编程语言。

  2. 面向对象:Java是一种纯粹的面向对象编程语言,万物皆对象。它支持类和对象的定义、封装、继承和多态等面向对象的特性。

  3. 跨平台性:Java具有“一次编写、随处运行”的特性,通过Java虚拟机(JVM)来实现跨平台的能力。编写的Java程序可以在不同的操作系统上运行,只需在目标平台上安装合适的JVM。

  4. 垃圾回收:Java自带垃圾回收机制(Garbage Collection),可以自动管理内存,无需手动分配和释放对象内存,提高了开发效率和程序的可靠性。

  5. 强大的类库:Java拥有丰富的类库和API,涵盖了各种常用功能,例如文件操作、网络编程、数据库访问、图形界面和安全等,开发人员可以直接使用这些类库来加快开发速度。

  6. 高性能:Java通过即时编译(Just-in-Time Compilation)技术,将字节码动态地编译成本地机器码,提供了高性能的执行能力。

  7. 安全性:Java具有强大的安全性特性,包括类加载机制、访问控制和安全沙箱等,可以确保Java应用程序在网络环境中的安全性。

  8. 大型社区支持:Java拥有庞大的开发者社区和活跃的开源社区,提供了大量的开发资源、教程和工具,使开发人员能够更好地利用Java进行开发和解决问题。

通过这些发展历史和语言特点,Java成为了一种被广泛应用于企业级应用开发、移动应用开发和大数据处理等领域的编程语言。

二、Java运行机制

Java的运行机制可以分为以下几个步骤:

  1. 编写Java代码: 开发人员使用Java语言编写程序代码,使用类和对象的概念进行面向对象的编程。

  2. 编译Java代码: 使用Java编译器(javac)将Java源代码编译为字节码文件(.class文件)。字节码是一种与特定平台无关的中间代码。

  3. 加载字节码文件: 类加载器(Class Loader)将字节码文件加载到Java虚拟机(JVM)中。类加载器负责在需要时加载类,并生成该类的运行时对象。

  4. 字节码验证: Java虚拟机对加载的字节码文件进行验证,确保其符合Java语言规范,以防止不安全或恶意的代码执行。

  5. 执行: JVM将字节码解释(解释执行)或即时编译(Just-In-Time Compilation,JIT)为机器码,然后在底层操作系统上执行。JIT编译器将频繁执行的字节码转换为机器码,以提高执行效率。

  6. 内存管理: JVM进行内存管理,包括内存分配、垃圾回收和内存释放。内存分为堆(Heap)和栈(Stack),堆用于存储对象实例,栈用于存储方法调用和局部变量。

  7. 垃圾回收: JVM有一个垃圾回收器(Garbage Collector),负责自动回收不再使用的对象内存。垃圾回收器通过标记-清除、复制、标记-整理等算法来回收内存,并为后续的对象分配新的内存。

  8. 异常处理: 在运行过程中,如果出现异常,JVM将捕获并处理异常,可以选择终止程序或采取其他适当的操作。

通过这些步骤,Java程序可以在不同的系统和平台上运行,并提供跨平台的特性。 

三、Java虚拟机

Java虚拟机(JVM)是运行Java程序的软件环境,由它来负责解释执行Java的字节码,并且Java字节码只能运行于JVM之上。这样利用JVM就可以把Java字节码程序和具体的硬件平台以及操作系统环境分隔开来,从而实现了真正的二进制代码级的跨平台移植。JVM是Java平台无关的基础,Java的跨平台特性正是通过在JVM中运行Java程序实现的。 

四、Java的运行环境

1.Java开发工具Java SDK:Java Developement Kits, 简称JDK;

2.安装和设置环境变量:

C:\Program Files\Java\jdk14
C:\Program Files\Java\jdk14\bin

五、第一个Java程序——HelloWorld! 

1.在记事本编写


public class HelloWorld{
    public static void main(String[] args){
            System.out.println("Hello, World!")
    }
}

 2.在命令行窗口下依次输入:


javac HelloWorld.java---编译命令
java HelloWorld--执行命令

3.类(class)是Java程序的最小程序单位。一个Java源文件最多只能包含一个public类定义,则该源文件名与public类的类名相同。main是程序执行的入口,若源文件有多个类,则main方法所在的类与文件名相同。main方法头部固定,大小写敏感。

4.类名一般以大写字母开头,采用驼峰式写法,如定义一个动物,则可以取名为Animal。每条语句单独占一行,以分号结束。

六、总结 

1.了解Java的发展简史和语言特点。

2.Java应用程序的开发经过编写、编译、运行三个步骤。

3.Java虚拟机JVM使Java应用程序实现了跨平台运行。

4.使用记事本等文本编辑工具进行程序代码的编写,使用Java开发工具集JDK提供的编译器进行编译,最后Java解释器解释运行。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

并查集练习 — 岛屿问题(二)

题目: 同样是岛的问题,但是参数有所变化,一共3个参数,m、n、int[][] position。根据position,求出每一步的岛屿的数量。 代表的意思是:m * n是二维数组的行和列,通过 m * n可以构建一个值都为0的…

python 合并多个excel文件

使用 openpyxl 思路: 读取n个excel的文件,存储在一个二维数组中,注意需要转置。将二维数组的数据写入excel。 安装软件: pip install openpyxl源代码: import os import openpyxl # 将n个excel文件数据合并到一个…

Android性能优化—数据结构优化

优化数据结构是提高Android应用性能的重要一环。在Android开发中,ArrayList、LinkedList和HashMap等常用的数据结构的正确使用对APP性能的提升有着重大的影响。 一、ArrayList ArrayList内部使用的是数组,默认大小10,当数组长度不足时&…

Spring源码——初识Spring容器

Spring源码之工厂(容器) 为什么把Spring的工厂又叫做容器呢? 工厂的责任是创建对象,但是创建完对象后还要进行存储(针对于单例的对象来讲),以供其他地方使用,这就是容器。为了能存…

设计模式行为型——迭代器模式

什么是迭代器模式 迭代器模式(Iterator Pattern)属于行为型模式,其提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示,即不需要知道集合对象的底层表示。编程环境中非常常用的设计模式。 迭代…

详解PHP反射API

PHP中的反射API就像Java中的java.lang.reflect包一样。它由一系列可以分析属性、方法和类的内置类组成。它在某些方面和对象函数相似,比如get_class_vars(),但是更加灵活,而且可以提供更多信息。反射API也可与PHP最新的面向对象特性一起工作&…

谷歌语音助手战略调整:开发 AI 新版,调整裁员计划

北京时间8月2日晚间,谷歌通过对 “谷歌助手” 团队进行调整和裁员,意图改变其开发方向。经过此次变动,谷歌计划借助最新的生成式人工智能技术和大型语言模型来提升 谷歌助手 的能力。此次调整表明语音助手市场未达到先前的预期。 亚马逊旗下的…

【从零开始学习JAVA | 三十四篇】IO流

目录 前言: IO流介绍: IO流的常见方法: 1.字节流类: 2.字符流类: 总结: 前言: IO流就是存入和读取数据的解决方案,并且他是一个知识点很多的章节,因此我们关于IO流…

Apache+Tomcat 整合

目录 方式一:JK 1、下载安装包 2、添加依赖 3、启动服务,检查端口是否监听 4、提供apxs命令 5、检查是否确实依赖 6、编译安装 7、重要配置文件 方式二:http_proxy 方式三:ajp_proxy 方式一:JK 1、下载安装…

IDEA项目实践——动态SQL、关系映射、注解开发

系列文章目录 IDEA项目实践——创建Java项目以及创建Maven项目案例、使用数据库连接池创建项目简介 IDEWA项目实践——mybatis的一些基本原理以及案例 IDEA项目实践——动态SQL、关系映射、注解开发 IDEA创建项目的操作步骤以及在虚拟机里面创建Scala的项目简单介绍_intelli…

【计算机网络】网络基础(上)

文章目录 1. 网络发展认识协议 2.网络协议初识协议分层OSI七层模型 | TCP/IP网络传输基本流程情况1:同一个局域网(子网)数据在两台通信机器中如何流转协议报头的理解局域网通信原理(故事版本)一般原理数据碰撞结论 情况2:跨一个路由器的两个子网IP地址与…

分布式定时任务框架Quartz总结和实践(1)

一、概述 Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或…

纯css实现登录表单动效

效果图&#xff1a; 代码展示 // 我这边用的是elementUI表单校验&#xff0c;更改的样式。 <el-form:model"form":rules"rules"ref"fromList":hide-required-asterisk"true"><el-form-item prop"account"><…

记一次 .NET某医疗器械清洗系统 卡死分析

一&#xff1a;背景 1. 讲故事 前段时间协助训练营里的一位朋友分析了一个程序卡死的问题&#xff0c;回过头来看这个案例比较经典&#xff0c;这篇稍微整理一下供后来者少踩坑吧。 二&#xff1a;WinDbg 分析 1. 为什么会卡死 因为是窗体程序&#xff0c;理所当然就是看主…

回归预测 | MATLAB实现SO-CNN-BiGRU蛇群算法优化卷积双向门控循环单元多输入单输出回归预测

回归预测 | MATLAB实现SO-CNN-BiGRU蛇群算法优化卷积双向门控循环单元多输入单输出回归预测 目录 回归预测 | MATLAB实现SO-CNN-BiGRU蛇群算法优化卷积双向门控循环单元多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 MATLAB实现SO-CNN-BiGRU蛇群算法…

14-1_Qt 5.9 C++开发指南_网络编程及主机信息查询_HostInfo

Qt 网络模块提供了用于编写 TCP/IP 客户端和服务器端程序的各种类&#xff0c;如用于 TCP 通信的QTcpSocket 和 QTcpServer&#xff0c;用于 UDP 通信的 QUdpSocket&#xff0c;还有用于实现 HTTP、FTP 等普通网络协议的高级类如 QNetworkRequest&#xff0c;QNetworkReply 和Q…

Java异常体系总结(上篇)

目录 1. 什么是异常&#xff1f; 2. 异常家族体系介绍 2.1 Error 2.2 Exception 2.2.1 运行时异常 2.2.2 编译时异常 2.2.3 Exception 分类总结 3. 从类加载的全过程深入理解编译时异常与运行时异常 3.1 类加载的全过程 3.2 什么是编译时异常&#xff1f; 3.3 什么是…

OpenCV中图像变换

一、介绍 transform()&#xff1a;Transposes a matrix. perspectiveTransform()&#xff1a;Performs the perspective matrix transformation of vectors. warpAffine()&#xff1a;Applies an affine transformation to an image. warpPerspective()&#xff1a;Applies a p…

振弦传感器信号转换器应用山体滑坡安全监测

振弦传感器信号转换器应用山体滑坡安全监测 随着人类文明的进步&#xff0c;自然灾害对人们的生活和财产安全造成的威胁也越来越大。山体滑坡作为自然灾害中的一种&#xff0c;给人们的生活和财产安全带来了极大的威胁。因此&#xff0c;进行山体滑坡的安全监测显得尤为重要。振…

标准IO和直接IO

标准IO访问方式 直接IO访问方式&#xff08;open O_DIRECT绕过内核缓冲区直接访问&#xff0c;有效避免CPU和内存多余时间的开销) 注意:直接I/0的缺点就是如果访问的数据不在应用程序缓存中&#xff0c;那么每次数据都会直接从磁盘进行加载&#xff0c;这种直接加载会非常缓慢…