【java】JDK、JRE、JVM的关系

http://www.cnblogs.com/xiangchangdong/p/3924030.html

目录结构:

其三篇 在IIS中过夜服务

contents structure [-]

透过前两篇的就学,大家询问了怎样搭建一个最简单易行的WCF通讯模型,包含定义和完毕服务协定、配置服务、寄宿服务、通过抬高服务引用的格局安顿客户端并走访服务。大家对WCF的编程生命周期有了一个最主旨的刺探。

什么是JDK,JRE,JVM

在前两篇中示范的例子,一定要力求背着做下来,蕴含源程序、配置文件都要背着一行行的手写下去,这样才能有深入的咀嚼。WCF的学问零散复杂,必须一步一个脚印的求学和操练。假使您还从未做到明白于胸,以往赶早翻回到把例子再做几次。

安装JDK的时候为何有三个jre

明天让大家多少尖锐一些,明白部分关于住宿的新知识:在IIS中过夜服务。

  1. 专用JRE
  2. 共用JRE
  3. 共用JRE和专用JRE的对比

在前两篇的例子中,我们树立了一个控制台应用程序来作为劳动的宿主,那种寄宿方式叫做”自托管”,即WCF服务和应用程序是一环扣一环的。这种寄宿方式有部分亮点,他索要最少的框架协助(只要求一个控制台应用程序就足以了,处处建立,处处运行),由此配置和利用都以最简便易行的,其余通过控制台程序还足以对WCF服务运作中生出的荒唐举行监视,在付出服务等级,那种办法能提供调试的惠及。

java的跨平台性情

而是,即使作为最后产品陈设,自托管的夜宿格局就不那么适合,应用程序比较框架(IIS、Windows服务等)是不平稳的,WCF与应用程序共享生命周期,应用程序关闭后WCF也会停下。还有许多特征诸如进度回收、空闲关闭等自托管都以不帮衬的。因此,为了使大家的WCF符合产品级其他渴求,应该为其选取一个更安宁、伸缩性更好的宿主。

JDK各种文件的功用

除了自托管,WCF还是能住宿于IIS、Windows服务、Windows进度激活服务(WAS)中。比较盛行的是在IIS和Windows进度激活服务寄宿。

参照小说

在IIS中过夜,须要IIS5.1或更高版本的援救,IIS会为大家管理瑟维斯Host(还记得他啊,看率先篇中的代码),同时为我们提供经过回收、空闲关闭、进度运行景况监视等个性帮忙,我们只须要把劳务相关的公文依照一定的公司办法放入IIS的托管中(就像建立一个网站应用程序或虚拟目录),IIS会为大家管理整个。那种托管受到支撑的连串广大,从Windows
XP SP2 到 WIndows Server
2008,所以它不行流行。但是她也有弱点,它不得不承受http协议的绑定,对于tcp、管道、MSMQ都是不援救的。

JDK最开头叫做Java SDK(java software develop
kit,java软件开发工具包),SDK是为了更好的放大产品而规划出来的支援程序员使用该产品的工具。比如微软为了加大本身的Window系统,于是把一些连串底层的“方法、实例,源代码····”封装好,起名为Windows
SDK,然后发布出去,有了那几个包裹好的开发工具,才会掀起更加多的程序员对Windows开发。

起名,从IIS7开端,提供了所谓Windows进度激活服务(WAS)
的法力,若是把WCF寄存在WAS中,就足以辅助具备的绑定协议(TCP等),像MSMQ那样的合计,在内网和.Net编程模型下有很大的属性优势,因而WAS应该会变成今后WCF寄宿的要紧形式,不过IIS7要求Windows
Vista以上版本的系统才能帮衬,他的推广或者尚需时日吧。

1,什么是JDK,JRE,JVM。

JDK:java development toolskit,包括java开发工具和jre。

JRE:java runtime enviroment,包括java运行环境和jvm。

JVM:java virtual machine,java虚拟机,用于有限支撑java的跨平台。

三者的关联图:

起名 1

 

咱俩今日先读书在IIS中过夜,记住,IIS寄宿只支持http协议的绑定。

2,安装JDK为何会产出八个JRE

我们在装置JDK的时候会出现八个JRE,一个JRE在JDK的外部,一个JRE在JDK的其中,那就是所谓的共用JRE和专用JRE。

试行环境在印证一下:

2.1专用JRE

专用JRE位于JDK的里边,是特地用来周转JDK中蕴藏的工具。专用JRE没有注册表的设置,日常位于(C:\Program Files\jdk1.7.0\jre)中。

配置JDK的时候,我们配备了环境变量path和classpath,其中classpath里布署了tools.jar包(java开发的根底包)。那时候大家将tools.jar包更改成另一个名字,会并发如下的谬误:

起名 2

并发那种错误的由来就是大家改变了tools.jar的名字,java程序运行的经过中找不到tools.jar包了,所以报出错误。再查看jdk安装目录下的工具,几乎都以字节码(class文件),也等于说因而要利用JDK所附的工具来支付Java程序,所以作者要求附一套JRE才能运作。

Windows 7 家庭高级版 SP1

2.2共用JRE

公家 JRE 可由其他 Java 应用程序使用,并且包括在 JDK 外部(经常位于
C:\Program Files\Java\jre1.7.0)。公共 JRE 会注册到 Windows
注册表(位于 HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft)中。

IIS7

2.3公共JRE和专用JRE对比

当我们只要求周转外人已经付出好的java程序,那时候用公用jre就可以了。可是只要我们要求开支JAVA程序,那么就必须安装JDK,JDK中蕴藏专用JRE和开发工具,这几个开发工具须要专用JRE才可以使用,也就说专用JRE是为大家开发JAVA程序安不忘危的。还有两边的jre文件是有分其他,由此不可以不管相互交换。

 

Visual Studio 2010 旗舰版 SP1

3,java跨平台的脾性

起名 3

从图片中大家开出,java语言具有跨平台的表征,但是jvm不拥有跨平台。

当大家在用javac命令编译java文件时,生成了jvm能够分辨的字节码文件,那一个进度不在jre里完结。当大家用java命令运行class文件的时,这一个进度就是在jre里调用jvm来贯彻的。换句话说jre不拥有编译功用。

 

诚实的上学,我们今日不正视IDE匡助建立的档次,完全手写一个过夜于IIS的劳动。

4,jdk安装目录下一一文件的功用

bin  — 
JDK中所包罗的开发工具的可执行文件,PATH环境变量应该包涵一个针对性此目录的项。书中是这样说的:一些命令行工具,包涵Java编译器的起步命令。bin目录下所有可执行文件的效率可以参考JDK/bin目录下的差异exe文件的用处文档

db  —   jdk从1.6随后内置了Derby数据库,它是是一个纯用Java达成的内存数据库,属于Apache的一个开源项目。用Java落成的,所以可以在此外平台上运行;其余一个特点是体量小,免安装,只需求多少个小jar包就足以运作了。

include   —  
java和JVM交互用的头文件;

lib  —   常用类库

jre  — 
java运行环境

src — 
部分源代码的压缩文件

javafx-src  — 
图形和传媒包的源码压缩文件

 

  1. 为IIS应用建立物理地方

5,参考小说

1,JDK/bin目录下的不一致exe文件的用途

2,JDK各文件夹作用。

3,设置JDK的时候怎么会有多少个jre文件

4,Java中JDK,JRE和JVM之间的关系

 

IIS应用程序须求映射到地头驱动器的一个大体路径上,大家先把它建好。

自小编把这一个文件夹建立在了C:\WCF\下,取名为IISService。(HelloWCF是我们在前两篇中建立的,还记得么)

 起名 4

  1. 确立IIS应用程序

 物理路径建好了,以后大家在这么些任务上确立一个应用程序。点击起初->控制面板,在类型中找到管理工具,然后打开IIS。

起名 5

展开左侧的节点,在暗中同意网站节点上点击右键,采用“添加应用程序”

起名 6

为应用程序指定一个别名,这些可以随意起的,这些名字将改为将来劳动地方的一部分,小编把它起作IISService,物理路径就分选大家刚刚建立的文件夹。

起名 7

点击确定,IIS应用程序就建好了,我们得以看看在暗中同意网站下多了那么些应用程序,不过里面还什么都尚未。

起名 8

  1. 创建服务文件

我们须求依据IIS宿主的渴求创造多少个文件放到IIS中才能承载起大家的服务,当然服务的相干音信也是描述在这个文件中的。

(1) svc文件。

svc就是service的意思了,我们必要首先建立一个XXX.svc的文本放到IIS应用程序目录下,那么些文件是服务的进口,客户端须求那么些文件的地方来拜访服务(当然也囊括原数据互换)。

大家来手动建立这几个文件,打开VS2010,拔取文件菜单->新建->文件。在常规栏目中,选用一个文书文件,然后点击”打开”按钮

起名 9

那应该是个svc文件,而不是.txt文件,所以我们另存一下,另存的时候要留意保存类型选为所有文件。小编把这么些文件起名为HelloWCFService.svc,那么些名字可以自由起,那么些名字也将改为服务地点的一部分。保存地方就是我们刚刚确立IIS应用程序的地方。

起名 10

今后大家来编排这几个文件的情节,很简短,就只有一行代码。

<%@ServiceHost language=c# Debug="true" Service="LearnWCF.HelloWCFService"%>  

被<%%>框住的代表那些是一个劳动器端包罗,@ServiceHost
标签表示那是个WCF的服务,联想一下前两篇代码中的ServiceHost
对象。language=c#
表示大家用C#言语来写代码,Debug=true顾名思义了,最根本的是Service那几个特性,他意味着那一个服务的落到实处类是怎么样,那里要用完全限定名,即要包含取名空间。我起了一个命名空间名LearnWCF,我们把劳务概念都坐落这些命名空间下,前边的HelloWCFService就是服务的落到实处类了。大家接下去要去完善那个类的始末。

可以见到。.svc文件就也就是一个率领,帮大家在IIS宿主中找到服务的职位,具体的代码,我们可以写在另一个地点(其实也足以写在svc文件中,不推荐)。

 

把写的内容保留一下,大家继承上扬。

接下去我们要写这些定义服务的类公事了。可是在那前面,大家先为类公事建立一个存放的职位,IIS的代码文件应该存放在IIS应用程序目录的App_Code子目录下,所以我们先把那么些文件夹建立起来。

起名 11

 

 

可以见到我们恰好建立的HelloWCFService.svc已经被识别为WCF服务了。

 

(2) cs文件

回到VS2010,仍然文件->新建->文件,选拔文本文件。

这一次大家要赤手空拳的是类公事,其名字为HelloWCFService.cs,注意另存为的时候要把保存类型选为所有文件,路径要选用大家刚创设的App_Code文件夹

编辑这几个文件,大家在那边定义和兑现劳务协定,应该很精晓吧,尝试着背着写下来呢。

    using System;  
    using System.ServiceModel;  

    namespace LearnWCF  
    {  
        [ServiceContract]  
        public interface IHelloWCF  
        {  
            [OperationContract]  
            string HelloWCF();  
        }  

        public class HelloWCFService : IHelloWCF  
        {  
            public string HelloWCF()  
            {  
                return "Hello WCF!";  
            }  
        }  
    }  

那几个代码应该很熟谙的打出去,倘若对那段代码还有如何不清楚的地点,快速翻回第一篇复习一下。

 

封存一下,我们一连进步

 

(3)web.config文件

大家已经很明亮,还亟需一个安顿文件,在里边布置终结点、服务、行为等等的消息。那个布局文件和我们前边建立的大概相同。

恐怕回到VS2010,如故新建一个文件文件,另存为web.config。这么些文件名,是不恐怕改的,保存路径是大家树立的IIS应用程序IIS瑟维斯的目录下(和svc保存在共同)

起名 12

    <configuration>  
      <system.serviceModel>  
        <services>  
          <service name="LearnWCF.HelloWCFService" behaviorConfiguration="metadataExchange">  
            <endpoint address="" binding="wsHttpBinding" contract="LearnWCF.IHelloWCF"/>  
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>  
          </service>  
        </services>  
        <behaviors>  
          <serviceBehaviors>  
            <behavior name="metadataExchange">  
              <serviceMetadata httpGetEnabled="true"/>  
            </behavior>  
          </serviceBehaviors>  
        </behaviors>  
      </system.serviceModel>  
    </configuration>  

 

 

以此布局文件和大家前边写的有部分差异之处:

1) 配置文件的文本名为web.config,而不是app.config

2)
<Service>标签没有了基地址的讲述,在IIS寄宿中,服务基地址是由IIS负责指定的。例如本例中劳动的大本营址为http://localhost/IISService/HelloWCFService.svc

3)
终结点的地点指定为了空,表示就选取劳务基地址作为终结点地址,当然那里也得以指定一个顶牛地址,可是不或然指定相对地址,必须遵从IIS指定的集散地址。

别的地点并不曾什么分别,特别注意在指定服务达成类和协定接口类的时候肯定要带上命名空间,那是一个万分不难犯的一无所长。

 

保存,马到功成

  1. 完成

到那里,在IIS中的寄宿就完了了,很简短,一个IIS应用程序,3个公文。当然那只是最简单易行的情状。

关于运营服务,IIS都会为大家去做,只要IIS应用程序(或网站)在线,服务就在线运行。

老艺术,在浏览器里面看一下,是否打响了。

IIS寄宿的劳动地方格式:

http://机器名/IIS应用程序名/XXX.svc  

为此大家以此例子的劳动地点应该是:http://localhost/IISService/HelloWCFService.svc 

起名 13

因为用IIS,所以系统活动提交了交流元数据的机器地址,而没有用localhost。

 

  1. 总结。

这一篇大家学习了何等在IIS中寄宿WCF服务,必备的因素统计如下几点:

(1) 建立IIS应用程序及物理路径

(2) 在应用程序路径下创立XXX.svc文件用于申明WCF入口和劳务地方导航

(3)
在应用程序路径的子目录App_Code下建立XXX.cs文件用于定义和落到实处服务协定

(4) 在应用程序路径下创造web.config 用于配置服务。

(5) 保持IIS为启动状态。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图