Java程序设计入门教程--Java语言概述

article/2025/10/9 23:55:16

目录

1.1 Java语言诞生与发展

1.2 Java语言的特点

1.3 运行机制与虚拟机


1.1 Java语言诞生与发展

       Java语言的诞生最早可以追溯至1991年,那时称为OAK语言,是SUN公司为一些消费性电子产品而设计的一个通用环境,其最初目的只是为了开发一种独立于平台的软件技术。
       1994年,开始将OAK技术应用于WEB上,并且开发出了HotJava的第一个版本。
       1995年,SUN公司正式推出Java,并快速引发了全球范围内的Java开发与应用的热潮。

        1996年1月,Sun公司正式发布了Java开发工具包(Java Development Kit)JDK 1.0,其中包括两大部分:运行环境和开发工具。

        1998年12月,Sun公司隆重发布了JDK 1.2,标志着Java2平台的诞生。在Java 1.2版以后将JDK 1.2改名为J2SDK,将Java改名为Java 2,并推出了备受业界追捧的Swing组件库。 
        1999年,Sun公司推出了以Java2为核心的J2EE、J2SE和J2ME三大平台。随着三大平台的迅速推进,全球形成了一股巨大的Java应用浪潮。

        2000年5月,Sun公司推出J2SE1.3,丰富了已有的API并加强对新API的拓展;
        2002年2月,Sun公司发布J2SE1.4,它是J2SE第一个参与了 Java共同体过程(JCP)的J2SE版本。Borland、Compaq、Symbian、IBM等公司参与共同体规范定制;
        2004年10月,Sun公司隆重发布J2SE5.0,J2SE的这次变更之重大和意义之深远,无论在成熟度、稳定性、可伸缩性、安全性上都有大幅度提升,市场的反应证明它的确值得升级为J2SE 5.0。
        2009年4月,著名的甲骨文公司(财团)收购SUN公司,次年发布了对Sun各项业务的整合规划,Java平台的发展迎来新的飞跃。

 


1.2 Java语言的特点

1Java语言是简单的

       Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C++ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。

2Java语言是面向对象的

       Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C++ 语言只对虚函数使用动态绑定。总之,Java语言是一个纯面向对象程序设计语言。

( 3Java语言是分布式的

Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java.net),它提供了用于网络应用编程的类库,包括URLURLConnectionSocketServerSocket等。

4Java语言是健壮的

Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。

5Java语言是跨平台的

Java语言具有跨平台性,且提出了“一次编译、随处运行”的口号,这是因为Java源文件(.java)在Java平台上被编译为体系结构中立的字节码格式(.class, 然后可以在实现这个Java平台(装有JVM)的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。

6Java语言是可移植的

Java的可移植性源于其跨平台性,此外Java还严格规定了各个基本数据类型的长度,它们在不同的机型上都保持固定的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。

7Java语言是多线程的

Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。Java语言支持多个线程的同时执行,并提供多线程之间的同步机制。
 

1.3 运行机制与虚拟机

        Java程序最大特点就是“一次编译,随处运行”,其实现的核心就是Java虚拟机(Java  Virtual Machine, JVM),它是java实现跨平台的最核心的部分。
       所有的Java程序会首先经Java编译器被编译为一种与平台无关的字节码文件(.class格式),该文件不能被直接执行,必须经过由JVM负责的特定解释操作,生成可以被各类本地平台所识别的机器码指令后才能被执行,如图所示。


http://chatgpt.dhexx.cn/article/GJ0wKeXS.shtml

相关文章

Java程序设计--Java入门(一)

Java入门 1、Java概述1.1 Java语言发展史1.2 Java语言跨平台原理1.3 JRE和JDK1.4 JDK的下载和安装 2. 入门程序HelloWorld2.1 常用DOS命令2.2 Path环境变量的配置2.3 HelloWorld案例2.4 HelloWorld案例常见问题 3、IDEA安装使用3.1 IDEA概述、安装3.2 IDEA编写程序3.3 IDEA设置…

Java程序设计教程(第3版)雍俊海 全书例程-2

p301随手画面板例程 import java.awt.Dimension; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionAdapter; import java.awt.Graphics; import java.awt.Point; import java.util.Vector; import javax.swing.JPan…

Java程序设计教程及实验指导(个人笔记)

文章目录 第一章Java语言概述第二章Java编程基础第三章Java类与对象第四章 继承与多态性第五章 异常处理第六章 Java常用类第七章 泛型与集合第八章 多线程第九章 Java I/O流第十章 图形用户界面第十一章 网络编程第十二章 数据库编程JDBC 第一章Java语言概述 一、实验操作 1、…

C++ostream的使用

在 C中,ostream表示输出流,英文”output stream“的简称。在 C中常见的输出流对象就是标准输出流cout,很少自定义ostream的对象,更多的是直接使用cout。那么 ostream 有什么用呢,来看一个场景: class CPoi…

istream_iterator和ostream_iterator学习体会

istream_iterator 在<iterator>头文件的定义中 定义istream_iterator变量的方法为 istream_iterator<T> in(strm); (其中T指明此istream_iterator的输入类型 , strm为istream_iterator指向的流) 提供了输入操作符&#xff08;>>&#xff09;和 输出操作…

Stream

Java8 的 Stream 流&#xff0c;加上 Lambda 表达式&#xff0c;可以让代码变短变美&#xff0c;还是变短变丑&#xff1f; 距离Java 8发布已经过去了7、8年的时间&#xff0c;Java 19也发布了。Java 8中关于函数式编程和新增的Stream流API至今饱受“争议”。 如果你不曾使用…

istream_iterator 和 ostream_iterator

C primer代码学习 通过istream_iterator 绑定标准输入 cin 通过ostream_iterator 绑定标准输出 cout #include <iterator> using std::istream_iterator; using std::ostream_iterator;#include<vector> using std::vector;#include<iostream> using std::c…

C++重载istream和ostream

对于一般的运算符重载&#xff0c;可以重载为类的成员函数&#xff0c;这是因为操作符的第一个元素一定是本类的对象&#xff08;this&#xff09; 例如 #include<iostream> using namespace std;class book { public:book (int n):bookNo(n) {}int getBookNo () {retu…

【C++初阶】ostream、operater<<、operator<<(ostream _cout, const Date d)、bool引导的结构体内嵌比较函数解析

对C重载、判断部分的知识进行梳理 目录 一、bool operator>(const Date& d) const【bool引导的结构体内嵌比较函数】 1.代码整体含义 2.代码两个const的含义 二、friend ostream& operator<<(ostream& _cout, const Date& d) 1. 相关基础概念 …

C++ iostream、ostream、istream等标准库都是什么?看完这篇就知道了

目录 iostream 库组成基本类模板类模板实例标准对象类型操纵符 源码 ostream 库istream 库fstream 库ios 库 我们在写C代码的时候&#xff0c;总会用到 iostream 库&#xff0c;这是C的标准库&#xff0c;几乎每个程序都会用到它&#xff08;有一些人则会用 cstdio &#xff…

C++之 ostream详细用法

概述 在 C中&#xff0c;ostream表示输出流&#xff0c;英文”output stream“的简称。在 C中常见的输出流对象就是标准输出流cout&#xff0c;很少自定义ostream的对象&#xff0c;更多的是直接使用cout。那么 ostream 有什么用呢&#xff0c;来看一个场景&#xff1a; clas…

Simple_SSTI_1

Simple_SSTI_1&#xff1a; 打开题目 查看一下网页源代码 flag在secret_key下 以get方式传递参数flag{{config.SECRET_KEY}}即得到flag。 也就是114.67.246.176.12930/?flag{{config.SECRET_KEY}} SECRET_KEY是config配置里面的一个值 告自己&#xff1a;要先截图再提交flag…

SSTI(模板注入) 解析 和 ctf 做法

基础知识补充&#xff1a; __class__ 返回类型所属的对象__mro__ 返回一个包含对象所继承的基类元组&#xff0c;方法在解析时按照元组的顺序解析。__base__ 返回该对象所继承的基类// __base__和__mro__都是用来寻找基类的__subclasses__ 每个新类都保留了子类的引用&#xff…

SSTI注入————php的SSTI

SSTI 就是服务器端模板注入&#xff08;Server-Side Template Injection&#xff09; ​ 当前使用的一些框架&#xff0c;比如python的flask&#xff0c;php的tp&#xff0c;java的spring等一般都采用成熟的的MVC的模式&#xff0c;用户的输入先进入Controller控制器&#xff0…

SSTI

模板注入在py2和py3中有些不同&#xff0c;但是没有本质上的区别。 模板注入的流程&#xff1a;找到父类<type ‘object’>–>寻找子类–>找关于命令执行或者文件操作的模块。 几个魔术方法&#xff1a; class 返回类型所属的对象 mro 返回一个包含对象所继承的基类…

SSTI模板注入及绕过姿势(基于Python-Jinja2)

前言&#xff1a;​SSTI&#xff08;服务端模板注入&#xff09;&#xff0c;已然不再是一个新话题&#xff0c;近年来的CTF中还是也经常能遇到的&#xff0c;比如护网杯的easy_tonado、TWCTF的Shrine&#xff0c;19年的SCTF也出了Ruby ERB SSTI的考点&#xff1b;本篇对这部分…

SSTI (服务器模板注入)

先来一波flask ssti漏洞的代码。 #python3 #Flask version:0.12.2 #Jinja2: 2.10 from flask import Flask, request from jinja2 import Template app Flask(__name__) app.route("/") def index():name request.args.get(name, guest)t Template("Hello &…

初步认识SSTI

SSTI简介 SSTI&#xff0c;即服务端模板注入&#xff0c;起因是服务端接收了用户的输入&#xff0c;将其作为 Web 应用模板内容的一部分&#xff0c;在进行目标编译渲染的过程中&#xff0c;执行了用户插入的恶意内容&#xff0c;从而导致各种各样的问题。 Python SSTI(flask…

ISCC SSTI

先找参数吧&#xff0c;通过信息搜集&#xff0c;参数是xiaodouni 就是小豆泥的英文&#xff0c;这个是暹罗猫的一个名字吧 然后直接放两个payload的吧 看不懂的可以看一下我以前的文章CTFshow ssti里面讲了思路&#xff0c;这里就不再解释了。 {%set pp(dict(popa))|join%} …

SSTI 学习笔记

PHP SSTI(Twig) 学习文章 进入环境&#xff0c;左上角有flag,hint 都检查看看 flag页面显示ip&#xff0c;hint页面源代码有提示 考虑XFF头或者referer头 测试一下 注&#xff1a;这里不用加上“&#xff1b;” 出来了 python flask ssti 学习文章 原理&#xff1a;因为对输…