从运维角度看 JAVA 技术

1. JAVA 技术

1.1. JAVA 技术的组成

Java 是一个面向对象的编程语言, 由 sun 公司所研发, 是目前世界上使用最广泛的编程语言之一

Java 技术的组成:

  • JVM: Java 虚拟机, 提供 Java 的运行环境
  • JAVA 编程语言: 提供给程序员编写代码
  • JAVA Class: Java 的类文件格式, 决定 Java 程序编译出的字节码应该遵循的规范, 用于兼容不同的 JVM
  • JAVA API: 提供 JavaAPI 接口, 缩短应用程序的开发周期

1.2. JVM

JVMJava 的核心和基础, 是 Java 解释器和 OS 平台之间的虚拟处理器(中间层), 它是一种基于操作系统和硬件平台利用软件方法抽象出的计算机
引入 Java 虚拟机后, 使得 Java 语言在不同平台上运行时不需要重新编; 使得 Java 程序员在开发 Java 程序时只需要面对 JVM 编写代码即可, 不用关心底层的操作系统和硬件平台
Java 语言使用 Java 虚拟机屏蔽了与具体平台相关的信息, 使得 Java 语言编译程序只需生成在 Java 虚拟机上运行的目标字节码, 就可以在多种平台上不加修改地运行

1.3. JDK

JDKJava 语言的软件开发工具包, 是整个 Java 的核心, 它包含了 Java 的运行环境和 Java 工具
简单来说 JDK = JAVA 编程语言 + JAVA API + 编译器 + JVM
JDK 的分类

  • Java SE: 标准版, 是我们通常用的一个版本
  • Java EE: 企业版, 使用这种 JDK 开发 J2EE 应用程序
  • Java ME: 主要用于移动设备、嵌入式设备上的 Java 应用程序

2. JAVA WEB 程序的实现

2.1. applet 类

applet 是采用 Java 编程语言编写的, 经过编译后 applet 程序可以嵌到 HTML 中去, 然后将 applet 程序发送到客户端, 客户端的浏览器只要安装有 JDK 插件就能执行这个 applet 程序, 并将结果通过浏览器显示在客户端上, 这便是客户端动态网站

客户端动态网站的缺点:

  1. 需要客户端安装 JDK 插件
  2. 如果 applet 带有病毒如果这个程序在客户端运行就可能会对客户端主机造成巨大的危害

因为这些缺点所以后来出现了服务器端动态的概念

2.2. servlet 类

Servlet 是用 Java 编写的服务器端程序, 其主要功能为交互式的浏览和修改数据, 生成动态 WEB 资源
Servlet 可以让 Java 语言根据 CGI 技术开发运行在服务器端的动态 WEB 程序, 但在通信量大的服务器上 Java Servlet 的优点在于它们的执行速度更快于 CGI 程序
Servlet 各个用户请求被激活成单个程序中的一个线程, 而无需创建单独的进程, 这意味着服务器端处理请求的系统开销将明显降低

Servlet 处理请求的过程:

  1. 客户端发送请求至服务器端
  2. 服务器将请求信息发送至 Servlet
  3. Servlet 生成响应内容并将其传给服务器
  4. 服务器将响应返回给客户端

2.3. JSP

JSPJava 的服务器页面,它是 Servlet 的一个特殊类, 在根本上是一个简化的 Servlet 设计
JSP 是在传统的 HTML 文件中插入 Java 的程序段, 从而形成了 JSP 文件
开发 JSP 程序的一个著名框架就是 SSH(Structs, Spring, Hebernate)
JSP 实现了 HTML 语法中的 Java 扩展, 通过在服务器端执行 Java 代码然后将执行结果嵌入到 HTML 中返回给客户端
Servlet 主要是实现了用 Java 语言开发运行在 server 端的 WEB 动态资源
而这些依据 Java 语言开发的 WEB 动态资源大多数都是 .jsp 资源

2.4. servlet container 和 web container

Servlet Container 包含 JDK 以及 JDK 所不具备的功能, 可以让一个 Servlet 运行起来, 有相应的 Servlet 进程
Servlet 进程负责接收前端 CGI 传递过来的请求, 并在本地的 JVM 上进行处理
Servlet 同时还负责监控本地的 .java 程序是否发生了修改, 一旦发生修改则重新让编译器编译成 .class 文件

Web Container 是一个包含 JasperServlet 相关的技术的框架, 其中 Jasper 负责监控本地的 .jsp 程序是否发生修改, 一旦修改就根据需求将其替换为 .java 源代码, 而 .java 就交给 Servlet 进行处理

Web Container 的商业实现: websphere, weblogic
Web Container 的开源实现: tomcat, jetty

原文地址:https://blog.51cto.com/hongchen99/2435821

时间: 2024-07-29 01:24:19

从运维角度看 JAVA 技术的相关文章

运维角度的Java知识点总结

JAVA是一个面向对象的编程语言,由SUN公司的程序员所开发.它不仅吸收了C++的各种优点,而且还撇弃了C++中难以理解的概念,如多继承.指针等:因此JAVA语言具有功能强大且简单易用两个特征,JAVA作为静态面向对象语言的代表,是全世界最受欢迎的计算机语言(没有之一) Java包含四个独立却又彼此相关的技术 JVM,Java的虚拟机,在JVM上运行Java的bytecode(字节码) Java的程序编程语言 Java Class,Java的类文件格式:其决定Java程序编译出的字节码应该遵循那

从运维角度看中大型网站架构的演变之路

前言 网上有很多文章类似于我今天要分享的课程,有架构师写的,有运维写的,还有开发些的,偏重点都不同,今天我以咱们运维角度全面讲解. 一个成熟的网站架构并不是一开始设计就具备高可用.高伸缩.高性能等特性的,它是随着用户量和业务线不断增加,基础架构才逐渐健壮的.在发展初期,一般都是从0到1,不会一上来就整一些大而全的架构,也很少人这么任性. 说明 适用业务:电商/门户/招聘网站 开发语言:PHP和JAVA Web服务:Nginx/Tomcat8 数据库:MySQL 操作系统:CentOS 物理服务器

运维角度浅谈:MySQL数据库优化

日志君导读: 一个成熟的数据库架构并不是一开始设计就具备高可用.高伸缩等特性的,它是随着用户量的增加,基础架构才逐渐完善. 作者:zhenliang8,本文转自51CTO博客,点击原文阅读查看网页版文章. 本博文主要谈MySQL数据库发展周期中所面临的问题及优化方案,暂且抛开前端应用不说,大致分为以下五个阶段: 1.数据库表设计 项目立项后,开发部根据产品部需求开发项目,开发工程师工作其中一部分就是对表结构设计.对于数据库来说,这点很重要,如果设计不当,会直接影响访问速度和用户体验.影响的因素很

从JVM的角度看JAVA代码--代码优化

从JVM的角度看JAVA代码–代码优化 从JVM的角度看JAVA代码代码优化 片段一反复计算 片段二反复比較 在JVM载入优化为class文件,运行class文件时,会有JIT(Just-In-Time)的介入,它会做进一步优化,这样就须要考虑是否可能被JIT优化. 片段一:反复计算 // 反复计算,这里b()被计算两次 Object a = b() == null ? "" : b(); // 优化代码 Object c = b(); Object a = c == null ? &

(转)运维角度浅谈MySQL数据库优化

转自:http://lizhenliang.blog.51cto.com/7876557/1657465 一个成熟的数据库架构并不是一开始设计就具备高可用.高伸缩等特性的,它是随着用户量的增加,基础架构才逐渐完善.这篇博文主要谈MySQL数据库发展周期中所面临的问题及优化方案,暂且抛开前端应用不说,大致分为以下五个阶段: 1.数据库表设计 项目立项后,开发部根据产品部需求开发项目,开发工程师工作其中一部分就是对表结构设计.对于数据库来说,这点很重要,如果设计不当,会直接影响访问速度和用户体验.影

从运维角度浅谈 MySQL 数据库优化

一个成熟的数据库架构并不是一开始设计就具备高可用.高伸缩等特性的,它是随着用户量的增加,基础架构才逐渐完善.这篇博文主要谈MySQL数据库发展周期中所面临的问题及优化方案,暂且抛开前端应用不说,大致分为以下五个阶段: 1.数据库表设计 项目立项后,开发部根据产品部需求开发项目,开发工程师工作其中一部分就是对表结构设计.对于数据库来说,这点很重要,如果设计不当,会直接影响访问速度和用户体验.影响的因素很多,比如慢查询.低效的查询语句.没有适当建立索引.数据库堵塞(死锁)等.当然,有测试工程师的团队

「运维之美」技术周刊 ( 第 1 期 )

本文首发于:微信公众号「运维之美」,公众号 ID:Hi-Linux. ?「运维之美」是一个有情怀.有态度,专注于 Linux 运维相关技术文章分享的公众号.公众号致力于为广大运维工作者分享各类技术文章和发布最前沿的科技信息.公众号的核心理念是:分享,我们认为只有分享才能使我们的团体更强大.如果你想第一时间获取最新技术文章,欢迎关注我们! 公众号作者 Mike,一个月薪 3000 的杂工.从事 IT 相关工作 15+ 年,热衷于互联网技术领域,认同开源文化,对运维相关技术有自己独特的见解.很愿意将

运维角度浅谈MySQL数据库优化

一个成熟的数据库架构并不是一开始设计就具备高可用.高伸缩等特性的,它是随着用户量的增加,基础架构才逐渐完善.这篇博文主要谈MySQL数据库发展周期中所面临的问题及优化方案,暂且抛开前端应用不说,大致分为以下五个阶段: 1.数据库表设计 项目立项后,开发部根据产品部需求开发项目,开发工程师工作其中一部分就是对表结构设计.对于数据库来说,这点很重要,如果设计不当,会直接影响访问速度和用户体验.影响的因素很多,比如慢查询.低效的查询语句.没有适当建立索引.数据库堵塞(死锁)等.当然,有测试工程师的团队

mysql分享一:运维角度浅谈MySQL数据库优化

转于:http://lizhenliang.blog.51cto.com/7876557/1657465 1.数据库表设计要合理避免慢查询.低效的查询语句.没有适当建立索引.数据库堵塞(死锁)等 2.数据库部署 项目初期访问量不会很大,所以单台部署足以应对在1500左右的QPS(每秒查询率).考虑到高可用性,可采用MySQL主从复制+Keepalived做双击热备,常见集群软件有Keepalived.Heartbeat. 双机热备博文:http://lizhenliang.blog.51cto.