走进java

1.概述

java不仅仅是一门编程语言,它还是一个由一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统,移动终端,企业服务器和大型机等各种场合。

      它摆脱了硬件平台束缚,实现了“一次编写,到处运行”的理性;

      它提供个了一种相对安全的内存管理和访问机制,避免了绝大部分的内存泄漏和指针越界问题;

      它实现了热点代码检测和运行时编译及优化,使得java应用能随着运行时间的增加而获得更高的性能;

       它有一套完整的应用程序接口,还有无数的来自商业机构和开源社区的第三方类库来帮助实现各种各样的功能。。。

java所带来的这些好处让程序的开发效率得到了很大的提升。

<

Java C的区别

Java走的是二进制跨平台路线,发布的是“跨平台”的二进制可执行文件(JavaClass文件),然后依赖每个平台上实现的JVM来执行之;C走的是源码跨平台路线,发布的是“源码”,在每个平台上重新编译一遍就可以使用。两者的取舍有所不同。

C偏底层,Java应用更广,Java虚拟机是使用 C语言开发的

>

2.java技术体系

从广义上来讲,Clojure,JRuby,Groovy等运行于java虚拟机上的语言及其相关的程序都属于java技术体系的一员。如果从传统意义上

来看,Sun官方所定义的技术体系包括如下几个组成部分:

  • java程序设计语言
  • 各种硬件平台上的java虚拟机
  • Class文件格式
  • java API类库
  • 来自商业机构和开源社区的第三方java类库

可以把java程序设计语言,java虚拟机,javaAPI类库这三部分统称为JDK(java developent Kit),JDK是用于支持java程序开发的最小环境。另外还可以把javaAPI类库中的java SE API子集和java虚拟机这两部分统称为JRE(java runtime environment)。

java技术体系所包括的内容




按照技术所服务的领域来划分,或者按照java技术关注的重点业务领域来划分,java技术体系可以分为四个平台,分别:

  • java card:支持一些java小程序(applets)运行在小内存设备(如智能卡)上的平台。
  • java  me(Micro Edition):支持java程序运行在移动终端(手机,pda)上的平台,对javaapi有所精简,并加入了针对移动终端的支持。
  • java se (Standard  Edition):支持面向桌面级应用(如windows下的应用程序)的java平台,提供完整的java 核心 api。
  • java EE(Enterprise Edition):支持使用剁成架构的企业应用(如erp,crm应用)的java平台,除了提供javaseapi外,还对其做了大量的扩充(以javax.*作为包名,以java.*为包名的都是javaseapi的核心包,由于历史的原因,一部分曾经是扩展包的api后来进入了核心包,因此核心包中也包含了不少javax.*的包名),并提供了相关的部署支持。

3.java发展史



hotspot 虚拟机发布时是作为jdk1.2的附件程序提供的,后来他成为了jdk1.3及以后所有版本的sun jdk的默认虚拟机。

自从jdk1.3开始,sun维持了一个习惯,大约每隔两年发布一个jdk的主版本,以动物名称命名,期间发布各种修正版本则以昆虫名称作为工程名称。

jdk1.4是java真正走向成熟的一个版本。

jdk从1.5版本开始,官方在正式文档与宣传上已经不再使用类似jdk1.5的命名,只有程序员内部使用的开发版本号(developer version,例如java -version 的输出)中继续沿用

1.5,1.6,1.7的版本号,而公共版本号(public version)则改为jdk5,jdk6,jdk7的命名方式。


jdk1.6的 改进包括:提供动态语言支持(通过内置mozilla javascript rhino引擎实现),提供编译api和微型http服务器api,等等。

在2006年11月13日的javaone大会上,sun宣布最终会把java开源,并在随后的一年多时间里,陆续地在GPL v2(gun general public license v2)协议 下公开了jdk各个部分的源码,并建立了OPenjdk组织对这些源码进行独立管理。

<java虚拟机

Oracle目前取得了三大商业虚拟机的其中两个:JRockitHotSpot

HotSpotSunJDKOpenJDK中所带的虚拟机,也是目前使用范围最广的Java虚拟机。

JRockit曾经号称“世界上速度最快的Java虚拟机”。>


4.java技术的未来

  • 模块化         模块化是解决应用系统与技术平台越来越复杂,越来越庞大而产生的一系列问题的一个重要途径。无论是开发人员还是产品的最终用户,都不希望为了系统中的一小块功能而不得不下载,安装,部署及维护整套庞大的系统。最近最近几年的osgi技术的迅速发展说明了通过模块化实现按需部署,降低复杂性和维护成本的需求是相当迫切了。
  • 混合语言     当大一的java语言无法满足当前软件的复杂需求时,越来越多基于java虚拟机的语言本应用到软件项目中。java平台上的多语言混合编程正成为主流。每种语言都可以针对自己擅长的方面更好地解决问题。试想一下,在一个项目之中,并行处理用clojure语言编写,展示层使用jruby/rails,中间层用java,每个应用层都将使用不同的编程语言来完成,而且,接口对每一层的开发者都是透明的,各种语言之间的交互不存在任何困难,就像使用自己的语言原生api一样方便(在同一个虚拟机上运行的其他语言和java语言之间的交互都比较容易,但非java语言之间的交互一般都比较繁琐,dynalang项目就是为了解决这个问题而出现的),因为他们最终都运行在一个虚拟机之上。  通过特定领域的语言去解决特定领域的问题是当前软件开发应对日趋复杂的项目需求的一个方向。

可以运行在jvm上的语言



常见语言的jvm实现版本



  • 多核并行    如今cpu硬件的发展方向已经从高频转变为多核心,随着多核时代的来临,软件开发越来越关注并行编程的领域。早在jdk1.5种就引入java.util.concurent包实现了一个粗粒度的并发框架,而jkd1.7种将会加入的java.util.concurent.forkjoin包则是对这个框架的一次重要扩充。虽然不能解决所有问题,但是在它的范围之内,能够轻松的利用多个cup核心提供的计算资源来协作完成一个复杂的计算任务。

jdk外围,也出现了专为满足并行计算需求的计算框架,如Apache的Hadoop Map/Reduce,这是一个简单易懂的并行框架,能够运行在由成千上万商用机组成的大型集群上,并能以一种可靠的容错方式并行处理上TB级别的数据集。另外还出现了诸如Scala,Colure及Erlang等天生就具备并行计算能力的语言。


  • 64位虚拟机   64bit ,32bit ,cup一次处理数据的能力是32位还是64位。64位cup拥有更强大的寻址能力,最大支持16G内存,而32位只支持4G内存。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中,Mock测试是一种常见的测试方法,用于模拟对象或服务器的行为,以便进行自己想要的测试。Mock测试主要有两种场景。 第一种场景是Mock一个对象,通过写入预期的值来进行测试。这种方法主要适用于单元测试,即针对特定语言开发的程序,必须使用基于该语言的Mock方案来实现。例如,Mockito是一种针对Java的Mock框架,适用于单元测试。\[1\] 第二种场景是Mock一个服务器,构造一个虚假的服务来返回预期的结果,以进行测试。这种方法主要适用于接口测试和性能测试,Mock方案与程序使用的语言无关,可以使用Java、Python等语言来实现。例如,可以搭建一个Mock服务器来模拟接口的行为,适用范围没有限制。\[2\] 在Java中进行Mock测试时,可以使用一些框架和注解来简化测试代码的编写。例如,使用Mockito框架可以使用注解@RunWith(MockitoJUnitRunner.class)和@Mock来模拟对象的行为,使用@InjectMocks来注入被测试对象。下面是一个示例代码: ```java @RunWith(MockitoJUnitRunner.class) @PrepareForTest(MyService.class) public class UserServiceTest { @InjectMocks private MyService myService; @Mock private MyRepository myRepository; @Mock private YourRepository yourRepository; @Test public void testInjectMocks() { System.out.println(myService.getMyRepository().getClass()); } } ``` 在这个示例中,使用了@RunWith(MockitoJUnitRunner.class)注解来运行测试,并使用@Mock注解来模拟对象的行为。@InjectMocks注解用于注入被测试对象。\[3\] 总结起来,Java中的Mock测试是一种常见的测试方法,可以用于模拟对象或服务器的行为,以进行自己想要的测试。可以使用Mockito等框架和注解来简化测试代码的编写。 #### 引用[.reference_title] - *1* *2* [走进Java接口测试之Mock(概念篇)](https://blog.csdn.net/zuozewei/article/details/84892008)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [JAVA测试类注解以及Mock测试](https://blog.csdn.net/m0_67793822/article/details/127387243)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值