首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>编程开发>java>正文

设定执行Java程序的Linux安全环境

http://www.oklinux.cn  2007-07-19  来源: 赛迪网 dxaw  会员收藏  游客收藏  【 】 

企业 Java 专家 Dennis Sosnoski 从 Java 服务器技术如何适合 Linux 来开始阐述他的观点,然后给出在 Linux 上安全地设定 Tomcat Java servlet 引擎的一点建议。

Linux 平台和 Java 平台有着久远的但有经常经历曲折的关系。建置高效能虚拟机器的同时又要跟上日益增长的核心 Java API 集合,这样做所带来的复杂性在很大程度上使开发 Java 平台的开放来源程序代码「Clean Room」实作的早期行动困难重重。Java 技术的特许实作最终可用于 Linux,但这些实作并不是开放来源程序代码。因此,大多数 Linux 分发版没有包括该特许实作。

尽管有这些困难,Java 平台还是提供了许多好处,从而导致在 Linux 上越来越多地使用该特许实作,尤其是对于服务器应用程序。在本文中,我回顾了 Java 平台给服务器应用程序带来的优点,然后研究了在 Linux 上简单且安全地部署 Java 服务所涉及的问题。作为一个实际范例,我将讨论设定 Apache Software Foundation 的广泛使用的 Tomcat Java servlet 引擎的详细信息以用于独立作业。

为什么使用 Java 平台?

有许多原因可以解释为什么 Java 平台成为基于服务器的商业应用程序的广为接受的选择。我将主要讨论我认为对于该环境至关重要的三个原因︰跨平台兼容性、受管执行时环境和易于开发。

Java 应用程序提供了跨多种操作系统和硬件平台的二进制兼容性。对于非 GUI 服务器应用程序尤其是这样,在此类别应用程序中,通常在实际目标系统中需要执行非常少的测试。工作人员可以在任何他们喜欢的平台上进行编码和除错,同时仍可以将这些应用程序部署到他们也许不能直接控制的环境中。

Java 虚拟机器(Java Virtual Machine,JVM)环境的执行时特性以几种方式来加强程序安全性。最显著的方面之一是严格的类别型检查、数组边界检查和自动垃圾收集的组合彻底防止了最具破坏性形式的服务器程序代码攻击︰缓冲区溢位、重复释放的错误和游离的指针。Java 语言早期用于 applet,经过不断发展,该语言还有一个完善的系统,用于对那些已确信存在安全性风险的设施进行细微的存取控制。这些方法可供独立应用程序选择使用,但它们已建置在许多 Java 服务的架构中。

这些执行时程序安全特性还提供了用 Java 语言开发的便利性。要对便利性这类别问题作任何精确测量是困难的,但大多数具有诸如 C 和 C++ 之类别语言背景而转向 Java 程序化的工作人员都承认在转变之后他们的生产力提高了。其中部分是因为在编译时和执行时严格执行类别型确定,以及自动内存管理的简单性。另一个因素是为 Java 平台开发的标准 API 扩充的集合。这些 API 对于新的工作人员可能是一个重大挑战,但是一旦学会了,API 会为各种企业需求提供优秀的跨平台支持。

当然,对于某些应用程序而言,Java 平台可能是一个糟糕的选择。尽管 JVM 体系结构在持续改进,但 Java 应用程序通常会比使用相同算法的 C 或 C++ 应用程序执行得稍微慢一点。根据我的经验和测试,我估计这个速度差异对于在特许 JVM 上执行的大多数服务器应用程序来说大约是在 20% 到 50% 的范围内,然而这很大程度上取决于程序代码的质量。与独立程序相比,在这些 JVM 上执行的 Java 应用程序还忍受着比较慢的启动,但是这对于长时间执行的服务器应用程序通常并不是一个重大问题。在大多数情况中,降低的效能和较慢的启动祇是为获得 Java 平台的增强的安全性和更快速的开发优点所付出的微小代价。

开放来源码替代选择

除了标准特许 JVM(免费使用,但是来源码受到限制;可用于 Sun、IBM、BEA 和 Blackdown 组织的 Linux)之外,对于 Linux 还有其它几个替代选择。这些选择包括「Clean Room」开放来源码 JVM 实作,其中使用最广泛的可能是 Kaffe(在许多 Linux 分发版中都包括它)。Kaffe 是一个非常有意义的项目,它已经完成了一些令人惊讶的工作,但它只能提供与目前特许 JVM 有限的兼容性。因此,它通常无法使用于本文所关注的企业类别型的服务器应用程序。

用于 Java 程序的本机程序代码编译器的开放来源码工作也有几个替代选择。这里最重要的项目是 GNU 编译器集(GNU Compiler Collection)的 GCJ.使用诸如 CGJ 之类别的本机程序代码编译器会将独立于平台的 Java 字节码在其执行之前转换成特定于平台的程序代码(这与在 JVM 中执行成对比,在 JVM 中执行通常在执行时将字节码转换成特定于平台的程序代码)。

本机程序代码编译显示出它极有可能成为一种避免在 JVM 中执行的 Java 应用程序启动较慢的方法。但是,使用这种方法的编译器通常都不能与当代特许 JVM 的稳定状态效能相匹配。如果 Java 应用程序使用 Java 平台的动态特性(如使用反射来存取字段或加载在执行时选择的类别),这种情况尤其突出。根据所使用的实作和编译选项,本机程序代码编译也许还会削弱 Java 平台的许多执行时安全特性。最后,由于许可证问题,许多 Java API 不能与已编译的本机程序代码一起使用。由于这些限制,本机程序代码编译目前还不是 Java 平台服务器应用程序的一个好选择。

共8页: 上一页 1 [2] [3] [4] [5] [6] [7] [8] 下一页

上一篇:Linux安装盘恢复重装Windows后破坏的GRUB   下一篇:Linux系统上使用RAM作为虚拟硬盘的方法


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·Linux 上的 WebSphere MQ 开发快速入门
·spring中对hibernate的支持程度分析
·AspectJ学习笔记之Pointcut
·Linux下运行JAVA程序 JRE安装和配置
·JAVA 视频教学
·JAVA初学者入门教学
·下载 程序员全集
·[转载]你该学什么程序语言
·使用Vi编辑器
·C++视频教程《下载》
·程序员的七种武器
·Java与C的不同点$$$$
·JAVA代码编写的30条建议!
·java配置------学习JAVA菜鸟级的!
·java抽取word,pdf的四种武器 @
·面向Web的JMS应用系统-------------爱好者精明的选择!
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·J2EE综合:如何实现javabean的属性拷贝
·关于Java数据对象JDO 2.0查询语言的特
·Java源码分析:深入探讨Iterator模式
·Java基础知识:谈谈简单Hibernate入门
·漫谈Java程序的性能优化
·设计及设计模式--面向对象的思维方式
·数据库相关--Hibernate的事务和并发
·Java 安全--java程序开发的程序的保护
·浅析Java学习从入门到精通
·一个用JAVA写的测算服务器响应速度程序
·软件测试:软件测试的基础知识概要介绍
·Java SE6调用Java编译器的两种新方法
  阅读排行
·Linux 上的 WebSphere MQ 开发快速入门
·C/C++头文件一览
·C++视频教程《下载》
·AspectJ学习笔记之Pointcut
·用gcc编译生成动态链接库*.so文件的方
·使用AJAX技术实现网页无闪自动局部刷新
·c++ builder视频教程
·spring中对hibernate的支持程度分析
·在Fedora8系统下搭建JSP开发环境的方法
·算法-编译原理之词法分析器-状态机SM
·Linux系统中安装JAVA JDK.6的方法
·最新visual c++6.0视频教学
·算法--操作系统--3种页面置换算法
·C语言程序设计讲课视频
·算法--数据结构--图的多重邻接链表表示
网摘收藏: