「java沙箱的基本组件」java 沙箱
本篇文章给大家谈谈java沙箱的基本组件,以及java 沙箱对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
java applet的用途是?谢谢
在传统的应用开发中,开发人员常常为了将为一种机器平台开发的程序移植到其它的平台上而感到头痛,Java的出现大大减轻了开发人员的这种负担,它的“一次编成,到处运行(Write Once,Run Anywhere)”的功能使开发人员能够开发出跨系统跨平台运行的应用程序。现在各种Java应用中都大量使用了Java applet,它是一种特殊的Java小程序,这些applet能够给人们带来更为活泼更具吸引力的Web页面。各种具有Java功能的浏览器,如Netscape Navigator、Microsoft Internet Explorer(MSIE)等,会自动下载并执行内嵌在Web页面中的 Java applet。 然而,Applet在给人们带来好处的同时,也带来了潜在的安全隐患。它使applet的设计者有机会入侵他人的机器。实事求是的讲,这个世界上没有一个电脑系统是百分之百安全的, 但由于现在Internet和Java在全球应用得越来越普及,因此人们在浏览Web页面的同时也会同时下载大量的Java applet,就使得Web用户的机器面临的安全威胁比以往任何时候都要大。 上述问题到目前为止还没有一种完全的解决方法。好在现在Java 的设计者已注意到了这一点,并尽其所能加以限制, 例如,在 JDK1.1 版中就采用逐渐流行的数字签名技术以减少applet可能造成的危险。 尽管如此,目前Web用户的机器还是很容易受到applet的攻击,而且现在用户能够采取的对策并不多。在Java applet 四处充斥的今天,人们使用具有 Java功能的浏览程序之时,对于浏览的网页的地点就不能不多加留意。 Web页面中的执行文件到底会带来什么样的潜在危险呢?大致上可分为四类∶更改系统、侵犯隐私权、非法入侵攫取资源、与使用者敌对。 恶意之1∶更改系统 像 Java 这样功能强大的程序语言,不管是在电脑的硬盘上还是在文件系统中,都具有修改数据的能力。 Java 中包含有许多预先定义好的类(class),其中的方法(method) 可以删除或修改文件、更改使用中的磁盘内容、杀掉执行程序或其执行线程 (thread)。 这些功能很有可能会被applet的设计者滥用。更改系统可能是所有潜在危险中最严重的一种,Java 的设计者对于限制此类危险已花费了很大的心思;相反的,ActiveX 则对其引发的可能结果尚未加以限制。 所谓的更改系统包括入侵系统。在不安全的使用 Java时,可能会被applet发现攻击的路径。 由于黑客 (hacker) 们总是想方设法利用各种手段入侵他人的电脑系统 ( 取得进入系统与使用权限 ),而我们用户能做的不过是小心使用Java而已,因此保证Java运行环境的安全最主要的还是Java设计者的责任,Java设计得必须保证在用户下载applet时没有其他进入系统的安全漏洞产生。 由于Java 可在多种操作平台上运行,因此恶意的applet只要在其中一种操作系统(例如Solaris) 上攻击成功, 在攻击其它作业系统 ( 例如 Windows NT) 时也能得逞。因此Java在带来应用程序跨平台执行的同时,也带来了恶意applet的这种跨平台攻击的可能性。 利用 Java 来入侵电脑系统并非不可能的事情。曾发现许多目前已知的 Java安全漏洞的美国普林斯顿大学安全Internet编程小组(Safe Internet Programming Team),就在实验室中展示了这种攻击型的 applet。虽然,目前针对已发现的一些安全漏洞已经提供了一些“补丁(patch)”程序, 但其它更为复杂的攻击仍可能潜藏着而未被人们发现。 在如今各种重要的电脑系统中,这种更改系统型的 applet 攻击对数据造成的破坏是非常严重的。如它可能会破坏一些表面上看来很安全的数据库中的财务记录,导致公司财务损失而破产;或者是窜改医院中病人的病情数据,导致医疗不当,甚至因此导致病人死亡。所以在目前未能打到解决方案的情况下,对Java applet的使用要非常小心,不要让重要的数据系统暴露在这种新型的攻击危险中。 Internet这种全球最开放的系统几乎可以称得上是电脑黑客们的乐园,这从Internet上层出不穷的入侵事件便不难看出。因此如何使 Java 不致于成为为他们的破坏工具,不管是对开发员来讲还是对用户来讲都是一个重要的课题。 恶意之2∶侵犯隐私权 第二种类型的攻击,就是暴露他人电脑主机的秘密数据。例如,在 Unix 系统中如能访问/etc/passwd( 记录系统中所有使用者的姓名与密码 )这个文件,就有可能入侵整个系统 。 另外,电脑系统也可能会造成一些敏感性资料的泄露,例如必术不正的公司可以利用商业间谍偷取对手公司的业务计划。个人用户对于其私人的电子邮件或财务记录是否可以公开也要慎重考虑,任何可藉由电子邮件传送或经由网络传递的秘密资料,都有可能受到入侵。 利用 Java 的功能,会产生双重伪造的可能性,典型的电子邮件伪造(mail-forging )的情况会更加严重。Applet 先使用系统送出假信息,以欺骗真的邮件。 最后,目前许多系统中盛行的声音功能,也可能会导致窃听。如果攻击者能掌握系统的麦克风,就有可能进行窃听的行为。 更隐秘的窃听是访问监视进程表(process table )和相关的文件。网页式的窃听,还可能包括追踪某一特定使用者所经过的网路连结。 Java 对于某些形式的网络攻击可以成功的进行防卫。例如,文件系统的输入输出操作就受到严格的控制。不过,这又与 applet 常需要一条通道以便传回数据的要求相违背,因为applet 总是必须与原来的服务器一直相连。电子邮件的伪造防卫起来则比较困难。由于缺乏对客户端连接接口的限制功能,电子邮件的伪造不太可能杜绝。 恶意之3∶拒绝系统服务 拒绝系统服务式的攻击,会让系统资源无法正常使用。通常的做法是利用一个执行程序吸取超过正常系统所分配的资源,甚至是霸占整个系统。这类攻击还可分为几个小的类型,例如填满文件系统或用光所有可用的文件资源;调用所有系统的内存,产生数以千计的窗口,以便有效的阻止屏幕输出或找开新的窗口;产生许多高优先权的执行线程,以耗光 CPU的执行周期。 虽然这一类危险的破坏作用也很大,但它们似乎并未引起Java 的设计者的重视。 人们对防止这种攻击的重要性还有些争议。在大部分情况下,拒绝系统服务式的攻击,比较接近与使用者敌对的攻击,因为从此类攻击中使系统恢复正常一般比较容易,只需要重新启动系统即可。不过,即使如此,在一些重要的系统中也可能会造成严重的后果,人们当然谁也不希望在与重要的系统连结时重新启动系统吧。例如,在处理股票交易的机器上蓄意拒绝系统服务,其造成的损失将难以想像的。 拒绝系统服务式的攻击是 Java 常见的安全问题之一。 现在Internet上有一个专门介绍此类问题的站点,这就是Mark La Due的Hostile Applet主页 ( ) 中,不兴趣的读者不妨一看,在这里面介绍了许多实际的例子。要制造这种类型的攻击实际上并不难,不过由于目前 Java 的安全模型并没有提供很好的解决办法,因此对它的防范却比较困难。 还有一种类型的 applet 攻击,只是造成使用者的困扰,虽然与以上三种攻击相比危险性小得多,但也值得引起重视。例如,故意发出不经意的声音,或在屏幕上显示不雅的画面等等。另外,还有单纯的程序设计错误而引起的一些不良后果也属于此类。正如前面所讲的,某些类型的拒绝系统服务式攻击,也可以归类为单纯的敌对行为,例如,产生众多窗口的操作,可能只是令人困扰而已,并不会造成破坏系统的数据。 Java的安全机制 Java语言的安全模型与传统的安全方法有很大的不同。第一,以前绝大多数操作系统都允许应用程序访问大部分系统资源。管理者必须依靠用户来对系统资源进行保护(如为不同的人设置不同的访问权限等)。第二,在应用程序执行前依靠用户来对其进行安全处理(如进行消毒等)。这种安全方法有两个明显的缺点:它依靠用户来进行验证,而且要依赖于验证软件本身的可靠性。而Java则采取了许多新的安全措施,它的最主要的安全机制就是Java沙箱。 为了抵抗这四种类型的 applet 攻击,Java安全模型提供了三把利箭∶字节码验证器(Byte-Code Verifier)、applet类装载器(Class Loader)以及安全管理器(Security Manager)。 这三者结合起来可在 applet 的装载与执行阶段,对文件系统、网络与浏览程序的内部存取做进一步检查。这三者缺一不可,共同维护着Java applet的安全。
什么是java jdk?
jdk安装好配置环境变量后,系统就承认了 java,javac等命令,当编译好java文件,就可以在开始——运行——cmd的dos系统下运用指定命令运行java文件。
JDK 是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库。
JDK包含的基本组件包括:
javac – 编译器,将源程序转成字节码
jar – 打包工具,将相关的类文件打包成一个文件
javadoc – 文档生成器,从源码注释中提取文档
jdb – debugger,查错工具
java – 运行编译后的java程序(.class后缀的)
appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。 Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。 Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。 Jconsole: Java进行系统调试和监控的工具
总之,jdk并不是一个应运软件,并不能从哪里运行。编译时在任何可输入文本的软件中均可(通常用.txt记事本编译),编译好后改名.java文件,在dos系统中用 javac命令编译连接 java命令 .运行。
Java的三大框架是什么?
java三大框架是:
1、Struts
为了解决这些问题,出现了Struts框架,它是一个完美的MVC实现,它有一个中央控制类(一个Servlet),针对不同的业务,我们需要一个Action类负责页面跳转和后台逻辑运算,一个或几个JSP页面负责数据的输入和输出显示,还有一个Form类负责传递Action和JSP中间的数据。JSP中可以使用Struts框架提供的一组标签,就像使用HTML标签一样简单,但是可以完成非常复杂的逻辑。从此JSP页面中不需要出现一行包围的Java代码了。
可是所有的运算逻辑都放在Struts的Action里将使得Action类复用度低和逻辑混乱,所以通常人们会把整个Web应用程序分为三层,Struts负责显示层,它调用业务层完成运算逻辑,业务层再调用持久层完成数据库的读写。
使用JDBC连接来读写数据库,我们最常见的就是打开数据库连接、使用复杂的SQL语句进行读写、关闭连接,获得的数据又需要转换或封装后往外传,这是一个非常烦琐的过程。
2、Hibernate
这时出现了Hibernate框架,它需要你创建一系列的持久化类,每个类的属性都可以简单的看做和一张数据库表的属性一一对应,当然也可以实现关系数据库的各种表件关联的对应。当我们需要相关操作是,不用再关注数据库表。我们不用再去一行行的查询数据库,只需要持久化类就可以完成增删改查的功能。使我们的软件开发真正面向对象,而不是面向混乱的代码。我的感受是,使用Hibernate比JDBC方式减少了80%的编程量。
现在我们有三个层了,可是每层之间的调用是怎样的呢?比如显示层的Struts需要调用一个业务类,就需要new一个业务类出来,然后使用;业务层需要调用持久层的类,也需要new一个持久层类出来用。通过这种new的方式互相调用就是软件开发中最糟糕设计的体现。简单的说,就是调用者依赖被调用者,它们之间形成了强耦合,如果我想在其他地方复用某个类,则这个类依赖的其他类也需要包含。程序就变得很混乱,每个类互相依赖互相调用,复用度极低。如果一个类做了修改,则依赖它的很多类都会受到牵连。 为此,出现Spring框架。
3、Spring
Spring的作用就是完全解耦类之间的依赖关系,一个类如果要依赖什么,那就是一个接口。至于如何实现这个接口,这都不重要了。只要拿到一个实现了这个接口的类,就可以轻松的通过xml配置文件把实现类注射到调用接口的那个类里。所有类之间的这种依赖关系就完全通过配置文件的方式替代了。所以Spring框架最核心的就是所谓的依赖注射和控制反转。
现在的结构是,Struts负责显示层,Hibernate负责持久层,Spring负责中间的业务层,这个结构是目前国内最流行的Java Web应用程序架构了。另外,由于Spring使用的依赖注射以及AOP(面向方面编程),所以它的这种内部模式非常优秀,以至于Spring自己也实现了一个使用依赖注射的MVC框架,叫做Spring MVC,同时为了很好的处理事物,Spring集成了Hibernate,使事物管理从Hibernate的持久层提升到了业务层,使用更加方便和强大。
Struts框架是2000年就开始起步了,技术相当成熟,目前全球Java开发中Struts框架是显示层技术中当之无愧的王者。它拥有大量的用户群和很好的开发团队。这也是国内大部分Java软件公司对新进员工的基本要求。
Java的安全机制有哪些?
》类装载器结构
(class
loader)
》class文件检查器
(the
class
file
verifier)
》内置于Java虚拟机(及语言)的安全特性
》安全管理器及Java
API
(security
manager)
在Java沙箱中,类装载器体系结构是第一道防线。它在三个方面对Java的沙箱起作用:
1它防止恶意代码区干涉善意的代码
2它守护了被信任的代码的边界
3它将代码归于某类(称为保护域),该类确定了代码可以进行哪种操作
Class文件检查器:
Class文件检查器保证装载的class文件内容有正确的内部结构,并且这些class文件互相间协调一致。Class文件检查器实现的安全目标之一就是程序的健壮性。如果某个有漏洞的编译器,或某个聪明的黑客,产生了一个class文件,而这个class文件中包含了一个方法,则合格方法的字节码中含有一条跳转到方法之外的指令,那么,一旦这个方法被调用,它将导致虚拟机的崩溃,所以,处于对健壮性的考虑,由虚拟机检验它装载的字节码的完整性非常重要。
Class文件检查器要进行四趟独立的扫描来完成它的操作。
第一趟:Class文件的结构检查
在这一趟扫描中,对每一段将被当做类型导入的字节序列,Class文件检查器都会确认它是否符合JavaClass文件的节本结构。在这一趟检查中检查器会进行很多检查例如:每个Class文件都必须以四个同样的字节开始:0xCAFEBABE。因为这个魔数Class文件分析器会很容易判断出某个文件具有明显问题而加以拒绝。检查器还必须确认在Class文件中声明的版本号和次版本号,这个版本号必须在这个虚拟机实现可以支持的范围之内。而且第一趟扫描还必须确认这个Class文件有没有被删减。总之第一趟扫描的目的就是保证这个字节序列正确的定义了一个新类型。
第二趟:类型数据的语义检查
第二趟扫描,检查器要查看每个组成部分,确认它们是否是其所属类型的实例,他们的结构是否正确。另外还要检查这个类本身是否符合特定的条件,它们是由Java编程语言规定的。例如,检查器强制规定除Object类以外的类必须有一个超类,或者检查final类有没有被子化等。
第三趟:字节码验证
这一趟是要确保采用任何路径在字节码流中都得到一个确定的操作码,确保操作数栈总是包含正确的数值以及正确的类型。
第四趟:符号引用的验证
在动态链接的过程中,如果包含在一个Class文件中的符号引用被解析时,Class文件检查器要进行第四趟检查。第四趟扫描仅仅是动态链接过程的一部分。当一个Class文件被装载时,它包含了对其他类的符号引用以及它们的字段和方法。一个符号引用是一个字符串,它给出了名字,并且可能还包含了其他关于这个被引用项的信息------这些信息必须足以唯一的识别一个类、方法、字段。这样对于其他类的符号引用必须给出这个类的全名;对于其他类的字段的符号引用必须给出类名、字段名以及字段描述符;对于其他类中的方法的引用必须给出类名、方法名以及方法的描述符。
所谓的动态链接是一个将符号引用解析为直接引用的过程。
此外,由于Java程序是动态链接的,所以Class文件检查器在进行第四次扫描中,必须检查相互引用类之间的兼容性。
除此之外,Java虚拟机还有一些内置的安全特性:
》类型安全的引用转换
》结构化的内存访问
》自动垃圾收集(不必显式地释放被分配的内存)
》空引用检查
通过保证一个Java程序只能使用类型安全的、结构化的方法去访问内存,Java虚拟机使得Java程序更为健壮。
java1.6的简介
【基本介绍】
JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK(Software development kit)。
JDK 是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握 JDK是学好Java的第一步。最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。其中IBM的JDK包含的JVM(Java Virtual Machine)运行效率要比Sun JDK包含的JVM高出许多。而专门运行在x86平台的Jrocket在服务端运行效率也要比Sun JDK好很多。但不管怎么说,我们还是需要先把Sun JDK掌握好。
从SUN的JDK5.0开始,提供了泛型等非常实用的功能,其版本信息也不再延续以前的1.2,1.3,1.4,而是变成了5.0,6.0了。从6.0开始,其运行效率得到了非常大的提高,尤其是在桌面应用方面。
JDK本身使用了Java语言编写,在我们下载的安装包里,有一个src.zip,里面就是JDK的源代码。
【软件特点】
JDK包含的基本组件包括:
·javac – 编译器,将源程序转成字节码
·jar – 打包工具,将相关的类文件打包成一个文件
·javadoc – 文档生成器,从源码注释中提取文档
·jdb – debugger,查错工具
·java – 运行编译后的java程序(.class后缀的)
appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。
Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。
Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。
Jconsole: Java进行系统调试和监控的工具
【使用方法】
1.安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为D:\java\jdk1.5.0_08;
2.安装完成后,右击“我的电脑”,点击“属性”;
3.选择“高级”选项卡,点击“环境变量”;
4.在“系统变量”中,设置3项属性,JAVA_HOME,PATH,CLASSPATH(大小写无所谓),若已存在则点击“编辑”,不存在则点击“新建”;
5.JAVA_HOME指明JDK安装路径,就是刚才安装时所选择的路径D:\java\jdk1.5.0_08,此路径下包括lib,bin,jre等文件夹(此变量最好设置,因为以后运行tomcat,eclipse等都需要依*此变量); Path使得系统可以在任何路径下识别java命令,设为:
%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
CLASSPATH为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别,设为:
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar (要加.表示当前路径)
%JAVA_HOME%就是引用前面指定的JAVA_HOME;
6.“开始”-;“运行”,键入“cmd”;
7.键入命令“java -version”,“java”,“javac”几个命令,出现画面,说明环境变量配置成功;
java容器的组件包括什么?
JAVA的容器包括如下:
List,Map,Set ,Collection ,List ,LinkedList ,ArrayList ,Vector ,Stack ,Set
Map ,Hashtable ,HashMap ,WeakHashMap
数据容器主要分为了两类:
Collection: 存放独立元素的序列。
Map:存放key-value型的元素对。(这对于需要利用key查找value的程序十分的重要!)
从类体系图中可以看出,Collection定义了Collection类型数据的最基本、最共性的功能接口,而List对该接口进行了拓展。
其中各个类的适用场景有很大的差别,在使用时,应该根据需要灵活的进行选择。此处介绍最为常用的四个容器:
LinkedList :其数据结构采用的是链表,此种结构的优势是删除和添加的效率很高,但随机访问元素时效率较ArrayList类低。
ArrayList:其数据结构采用的是线性表,此种结构的优势是访问和查询十分方便,但添加和删除的时候效率很低。
HashSet: Set类不允许其中存在重复的元素(集),无法添加一个重复的元素(Set中已经存在)。HashSet利用Hash函数进行了查询效率上的优化,其contain()方法经常被使用,以用于判断相关元素是否已经被添加过。
HashMap: 提供了key-value的键值对数据存储机制,可以十分方便的通过键值查找相应的元素,而且通过Hash散列机制,查找十分的方便。
关于java沙箱的基本组件和java 沙箱的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-27,除非注明,否则均为
原创文章,转载请注明出处。