CN105723337B - 用于从交互式开发环境递增地编译软件制品的方法和系统 - Google Patents

用于从交互式开发环境递增地编译软件制品的方法和系统 Download PDF

Info

Publication number
CN105723337B
CN105723337B CN201480057456.XA CN201480057456A CN105723337B CN 105723337 B CN105723337 B CN 105723337B CN 201480057456 A CN201480057456 A CN 201480057456A CN 105723337 B CN105723337 B CN 105723337B
Authority
CN
China
Prior art keywords
compiling
type
compiled
cache
computer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201480057456.XA
Other languages
English (en)
Other versions
CN105723337A (zh
Inventor
K·阿加格
S·那拉亚南
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN105723337A publication Critical patent/CN105723337A/zh
Application granted granted Critical
Publication of CN105723337B publication Critical patent/CN105723337B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/48Incremental compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/37Compiler construction; Parser generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

一种交互式开发环境接收用于开发或定制已建模类型的开发者输入。编译代理从IDE接收编译该开发者正在开发或定制的已建模类型的请求。编译代理访问先前编译的类型的高速缓存并且基于开发者所做的改变来确定可单独加载的类型中的哪些要被重新编译,并且仅编译所标识的那些类型。经重新编译的类型也被存储在高速缓存中。

Description

用于从交互式开发环境递增地编译软件制品的方法和系统
背景
许多软件开发者使用交互式开发环境(IDE)以便开发软件。开发者使用IDE以便开发计算机系统内的各类型的模型,以及以便定制那些模型。
示例性集成开发环境解说性地为包括多个不同工具而使得开发者能够开发并测试需要被开发的代码并且以便按需定制计算机系统的开发工具或开发环境。作为示例,IDE可包括允许计算机程序员开发软件的源代码编辑器、一个或多个构建自动化工具以及调试器。一些IDE解说性地包括编译器、解释器、或这两者它们可包括版本控制系统和各种工具来简化图形用户界面的构建。它们还可包括类浏览器、对象浏览器、以及类层级图,以用于面向对象的软件开发。从而,开发者可使用IDE来生成代码和元数据,连同对代码和元数据的定制,这些代码和元数据可用于开发在给定组织中使用的系统。
在使用IDE生成或定制软件时,应用开发者在应用内对具体概念(也被称为类型)建模,并且在需要时编写代码。大型应用(开发者常使用IDE来开发大型应用)可包括数千个不同的类型。从而,开发和定制这些类型是相对大的任务。
作为示例,一些计算机系统包括业务系统,如企业资源规划(ERP)系统、客户关系管理(CRM)系统、业务线(LOB)系统,等等。这些类型的计算机系统通常具有被建模和定制的数千个不同的类型。作为示例,一些此类业务系统通常仅不同的表格就有数千个,更别提许多其它类型。
业务系统不是仅有的具有大量类型的计算机系统类型。例如,游戏系统或各种其它类型的系统通常也具有在软件系统中建模的数千个不同的类型。
此类计算机系统可被经解释代码或经编译代码表示。在开发者开发或定制经编译代码时,开发者通常希望对开发或定制工作,并且随后运行代码来确保该代码如同开发者期望的那样工作。在经编译代码环境中,这已要求编译器重新编译整个系统,以便用新开发或定制的代码来运行该系统。原因在于:目前,编译器很大程度上仅是在需要编译时运行的可执行代码。当编译完成时,编译器失去其存储器和其构建的任何高速缓存。在开发环境中,这可能是非常耗时的,而且可能增加项目的开发阶段的时间和成本,而且还可能导致开发者体验中的困扰。
提供以上讨论仅用作一般的背景信息,并不旨在用作帮助来确定所要求保护的主题的范围。
概述
一种交互式开发环境接收用于开发或定制已建模类型的开发者输入。编译代理从IDE接收编译该开发者正在开发或定制的已建模类型的请求。编译代理将编译器作为长久运行服务来托管,该长久运行服务维持先前编译的类型的高速缓存并且基于开发者所做的改变来确定可单独加载的类型中的哪些要被重新编译,并且仅编译所标识的那些类型。经重新编译的类型也被存储在高速缓存中。
提供以上讨论仅用作一般的背景信息,并不旨在用作帮助来确定所要求保护的主题的范围。
提供本概述以便以简化的形式介绍以下在详细描述中进一步描述的一些概念。本概述并非旨在标识出要求保护的主题的关键特征或必要特征,亦非旨在用作辅助确定要求保护的主题的范围。所要求保护的主题不限于解决在背景中提及的任何或所有缺点的实现。
附图简述
图1是一个解说性开发架构的框图。
图2是解说图1中所示的架构在开发期间执行编译操作时的操作的一个实施例的流程图。
图3是解说用于图1中所示的编译代理的管理组件在管理编译代理的操作时的一个实施例的流程图。
图4A和4B示出了被部署在云计算架构中的图1中所示的架构的各个实施例。
图5-9示出了移动设备的各实施例。
图10是一个解说性计算环境的框图。
详细描述
图1示出开发架构100的一个解说性框图。图1示出了开发架构100包括交互式开发环境(IDE)102、连同编译代理104以及元数据和代码存储106。图1还示出IDE 102和编译代理104可与运行时环境108交互,该运行时环境托管使用IDE 102开发或定制的计算机系统。
此外,图1示出了开发者110解说性地与IDE 102交互来执行在运行时环境108服务的计算机系统中运行的应用元素112(例如,类型)的开发或定制。每个应用元素解说性地包括元数据114,并且还可包括代码116。图1还示出了IDE 102解说性地包括处理器118和数据存储120。
编译代理104解说性地执行在由IDE 102发送的编译请求112中请求的编译操作。编译代理104解说性地包括高速缓存124、管理组件126以及处理器128。在编译操作被执行后,代理104可解说性地将响应130提供回IDE 102。所有这些操作在下面参考图2和3更详细地讨论。
编译代理104还解说性地提供已编译类型132给运行时环境108,在该运行时环境108处已编译类型可被存储在数据存储134中以供在运行时期间执行。运行时环境108解说性地包括应用服务器136和运行时翻译器/定位器138。运行时翻译器/定位器138解说性地定位运行该计算机系统所需的应用元素的类型,并且按需加载所述类型。它们被解说性地从数据存储134加载到应用服务器136中,在应用服务器136处它们可在运行时期间被执行。
元数据和代码存储106解说性地存储与各种不同类型的应用元素(例如,类型)相对应的元数据和代码。例如,其可由IDE 102和编译代理104访问。
图2是解说图1中所示的开发架构100在开发软件系统时的操作的一个实施例的流程图。要注意,开发者110解说性地与IDE 102所生成的用户界面显示交互以便选择运行时环境108所使用的应用服务器中的应用元素以供调试或开发。开发者110可通过独立的开发者设备(诸如个人计算机、平板、另一移动设备等)或直接与IDE 102交互。开发者110还可通过网络与IDE 102交互。仅作为示例,在图1中开发者110被示出为直接与IDE 102交互。
IDE 102首先解说性地接收标识开发者希望建模或定制的应用元素(诸如可编译类型)的开发者输入。这由图2中的框150指示。作为响应,IDE 102解说性地从元数据和代码存储106或从运行时环境108获得所标识的应用元素的源代码表示。这由图2中的框152指示。该源代码表示还可包括元数据114、代码116、或其它信息118。
任选地,在开发或定制操作被执行后,编译代理104还可解说性地访问来自存储106的元数据和代码以预加载要被加载以供开发者110运行所开发或所定制的代码的所有所需的应用元素(例如,可编译类型)。代理104解说性地将其编译为可单个加载的类型并将其高速缓存在高速缓存124中。这由图2中的框154指示。IDE 102随后接收针对所标识的应用元素的定制输入,使得开发者实际上使用IDE 102来定制或开发该可编译类型。接收定制输入以及定制应用元素由图4中的框156指示。
在某个点,在开发者110已向现有模型做出期望数量的定制、或者已从头开发了一定数量的模型之后,开发者110可能希望使代码被编译代理104编译。这将使得开发者110能够运行新开发或定制的代码来查看该代码是否按照期望执行。回忆一下:编译代理104可能已经访问了来自数据存储106的多个已建模的类型并将其预加载到了高速缓存124中。而且,编译代理104可能已经基于开发者110先前所做的改变或开发者先前执行的开发而编译了从IDE 102接收的多个可编译类型。那些已编译的类型可能已经存在于高速缓存124中。从而,编译代理104接收来自IDE 102的编译请求122。在一个实施例中,编译代理104通过服务合同方法调用来接收编译请求122中的编译参数。作为示例,所展示的服务合同可以类似于下表1中示出的服务合同。
表1
要领会,编译代理104也可按其它方式接收编译请求122。使编译代理104接收标识开发者110在IDE 102处所做的改变或开发的编译请求由图2中的框158指示。
编译代理104随后访问高速缓存124来标识需要被编译的元素(例如,已建模的类型)使得开发者110所做的开发和定制能够被运行并被开发者110检查。在一个实施例中,编译代理104通过标识哪些特定的已建模类型已经被开发者110改变、或者哪些已建模类型已经被添加来完成此操作,并且仅编译那些已建模类型以及必须被编译以便所开发或定制的代码运行的任何其它已建模类型。
编译代理104检查高速缓存124来确定要被编译的已建模类型中的任何已建模类型是否已经被编译并被存储在高速缓存124中。如果是,则它们不需要被重新编译。这是因为已建模类型作为可独立加载的汇编件被建模并编译。从而,仅当前已被定制或开发的已建模类型需要被编译,而任何其它已建模类型不需要被重新编译,只要它们已经被编译并且已编译的版本被存储在高速缓存124中。标识要被编译的元素由图2中的框160指示。
编译代理104随后从数据存储中仅加载用于需要被编译的所标识元素的元数据和代码。这由图2中的框162指示。作为示例,IDE 102可将已定制和新开发的类型存储在数据存储106中以供编译代理104访问。当代理104标识了那些类型必须被编译时,该代理访问数据存储106中的元数据和代码(如果存在)使得编译可被执行。
一旦编译代理104具有了执行编译所需的全部元数据和代码,该编译代理就将所标识的元素(例如,已建模类型)编译为可单个加载的类型并使得已编译类型132对运行时环境108可用。这由图2中的框164指示。
编译代理104随后将新编译的元素存储在高速缓存124中,并向IDE 102发送指示编译已完成的响应130。这由图2中的框166指示。在此点,运行时环境108可运行刚刚被编译的代码以使得开发者110能够确定代码是否按照期望执行。在这样做时,运行时翻译器/定位器138可标识已编译类型132并且应用服务器136可加载并运行所述已编译类型。
贯穿整个过程,管理组件126解说性地执行代理104的自我管理。这在以下参考图3更详细地描述。然而,简言之,管理组件126解说性地监视编译104所使用的存储器脚印(footprint)。如果其达到一阈值水平,则管理组件126可使高速缓存124失效,以例如释放该存储器的大部分。类似地,如果编译代理104空闲了预定时间量,或者当前没有IDE实例102被实例化,则代理104可将其自己关闭。执行自我管理由图2中的框168指示,而确定是否将其自己关闭由框170指示。
如果在框170确定管理组件126应当关闭代理104,则其被关闭。这由图2中的框172指示。
图3是更详细地解说管理组件126的操作的一个实施例的流程图。应当注意,当IDE102第一次向代理104提供编译请求122时,代理104在该时间可能正在运行或者可能没有运行。如果没有,则管理组件126自动检测编译请求122已被接收并启动编译代理104。接收来自IDE 102的请求并在代理104没有已被启动时启动代理104由图3中的框180示出。
如上面参考图2讨论的,编译代理104随后执行所请求的编译操作,连同高速缓存操作。即,编译代理104编译所有的所需可编译类型(在搜索高速缓存124以确定哪些可编译类型需要被编译或重新编译之后),并将新编译的类型存储在高速缓存124中。这由图3这种的框182指示。
管理组件126间歇性地查询该管理组件在其中运行(或用其运行)的操作系统以确定编译代理104的存储器消耗是否超出给定阈值。这由图3中的框184指示。如果是,则管理组件126使高速缓存124失效或释放高速缓存124。即,其重新启动高速缓存操作(高速缓存已编译类型)。这由框186指示。当然,管理组件126也可执行其它操作来减少编译代理104的存储器脚印,且使高速缓存失效仅是一个示例。
如果在框184,确定存储器消耗没有超出该阈值,或在框186使高速缓存失效之后,管理组件126确定是否有IDE 102的任何实例仍在运行。这由图3中的框188指示。编译代理104的单个实例例如可对IDE 102的多个实例进行服务。如果没有IDE 102的实例正在运行,则不需要运行编译代理104,且编译代理将其自己关闭,如由框190所指示的。
然而,如果在框188确定存在IDE 102的实例仍在运行,则管理组件126确定编译代理104是否空闲了阈值时间量。这由图3中的框192指示。作为示例,可能开发者110仍在创作代码但是没有在调试代码。还可能开发者110已休息或仅是不处于他或她希望使代码被编译的开发阶段。在任何情况下,如果在框192编译代理104已空闲了阈值时间量,则管理组件126将其关闭,如由框190所指示的。然而,如果在框192确定编译代理104尚未空闲阈值时间量,则处理简单地返回到框180,此时代理104等待来自IDE 102的进一步的编译请求122。
从而,可以看出,每当编译代理104接收编译请求122时,编译代理104就基于开发者110所做的改变以及基于哪些类型已经被编译并被存储在高速缓存124中仅编译或重新编译需要被编译的那些可编译类型。这大大减少了期间开发者110需要等待来查看代码是否正确运行的编译时间。这增强了开发者体验,且可减少开发、定制或调试代码所需的时间和努力。
还应当注意,以上讨论已示出了多个数据存储,包括数据存储120、数据存储106以及数据存储134。尽管这些数据存储被示出为三个独立的数据存储,然而它们还可以在单一数据存储内形成。此外,那些数据存储中的数据也可被存储在多个附加数据存储中。而且,数据存储对于访问它们的环境或代理或组件而言可以是本地的,或者它们可以远离这些环境或代理或组件且可由这些环境或代理或组件访问。类似地,一些可以是本地的,而其他是远程的。
处理器118和128以及服务器136解说性地包括具有相关联的存储器和定时电路系统(未单独示出)的计算机处理器。它们是它们所属的代理或环境的功能部件,并且解说性地由该环境或代理中的其它项激活并促进所述其它项的功能。
还要注意,图1将编译代理104示出为与IDE 102分离。然而,要领会,编译代理104也可以是IDE 102的一部分。图1还示出了各种不同的框,具有与每个框相关联的功能。将注意,这些块可被合并以使得每一块执行更多功能,或者这些块可被划分以使功能被进一步分布。
而且,开发者110与之交互以操纵和控制IDE 102的用户界面显示解说性地具有用户可致动的输入机制,该输入机制可采取各种不同的形式,诸如图标、文本框、复选框、磁贴、下拉菜单等。这些输入机制可解说性地使用定点和点击设备(诸如跟踪球或鼠标)、按钮、游戏操纵杆、拇指盘、拇指开关、虚拟或硬件键盘或小键盘来致动。进一步,在用户界面显示被显示在触敏屏幕上的情况下,用户输入机制可使用触摸姿势(诸如用用户的手指、指示笔等)来致动。在显示所述显示的设备具有语音识别组件的情况下,用户输入机制可使用语音命令来致动。
图4A是图1中所示的架构100的框图,除了其元件被置于云计算架构500中。图4A示出了多个替换布置。例如,编译代理104被示出为既在云502中又在该云外。这旨在解说代理502可位于各种不同位置,架构100中的其它项同样可以。云计算提供了不要求最终用户知晓交付服务的系统的物理位置或配置的计算、软件、数据访问和存储服务。在各个实施例中,云计算通过诸如因特网之类的广域网使用合适的协议来交付服务。例如,云计算提供者通过广域网交付应用,并且它们可以通过web浏览器或任何其他计算组件被访问。体系结构100的软件或组件以及相对应的数据可被存储在远程位置处的服务器上。云计算环境中的计算资源可以被整合在远程数据中心位置处或者它们可以是分散的。云计算基础结构可以通过共享数据中心来交付服务,即使在用户看来它们是单个访问点。因此,在此所述的组件和功能可以从使用云计算体系结构的远程位置处的服务提供者来提供。替代地,它们可以从常规的服务器中提供,或者它们可以直接地或以其他方式安装在客户端设备上。
本说明书旨在包括公共云计算和私有云计算两者。云计算(公共和私有两者)提供了基本无缝的资源联营以及对管理和配置底层硬件基础结构的降低的需求。
公共云由供应商管理,并且通常支持使用同一基础结构的多个消费者。此外,与私有云相反,公共云能够将终端用户从管理硬件中释放出来。私有云可由机构本身管理,并且基础结构通常不与其他机构共享。该机构在某种程度上仍然维护着硬件,诸如安装和维修等。
在图4A中所示的实施例中,一些项与图1中所示的那些是类似的,并且它们被类似地编号。图4A具体地示出IDE 102、编译代理104和运行时环境108可全部位于云502(可以是公共的、私有的或者其中某些部分是公共的而其它部分是私有的组合)中。因此,开发者110使用具有用户界面显示505的用户设备504通过云502来访问那些系统。
图4A还描绘了云架构的另一替换实施例。图4A示出还构想了架构100的某些元素被置于云502中而某些元素没有被置于云502中。作为示例,数据存储106、120、134可被置于云502外部,并且通过云502来访问。在另一实施例中,编译代理104可在云502的外部。无论它们位于哪里,它们都可直接由设备504通过网络(广域网或局域网)访问,它们可由服务主存在远程站点处,或者它们可作为通过云来提供或通过驻留在云中的连接服务来访问的服务。本文构想了所有这些体系结构。
图4B示出了另一基于云的架构的框图。图4B类似于图4A,不同在于开发者110使用远程访问设备507来访问开发者设备504和IDE 102。本文构想了图4A和4B中表示的所有各种配置。
还将注意,架构100或其部分可被置于各种各样不同的设备上。这些设备中的某些包括:服务器、台式计算机、膝上型计算机、平板计算机、或其他移动设备,诸如掌上计算机、蜂窝电话、智能电话、多媒体播放器、个人数字助理等。
图5是可被用作其中可部署架构100(或其部分)的用户的或客户端的手持式设备16的手持式或移动计算设备的一个解说性实施例的简化框图。图6-9是手持式或移动设备的示例。
图5提供了客户端设备16的组件的总体框图,该客户端设备16可以运行架构100的组件或与架构100交互,或这二者。在设备16中,提供了通信链路13,该通信链路允许手持设备与其它计算设备通信,并且在一些实施例中提供用于诸如通过扫描来自动接收信息的信道。通信链路13的示例包括:红外端口、串行/USB端口、诸如以太网端口之类的电缆网络端口、以及允许通过一个或多个通信协议的通信的无线网络端口,所述通信协议包括作为用于提供对网络的蜂窝接入的无线服务的通用分组无线服务(GPRS)、LTE、HSPA、HSPA+、以及其他3G和4G无线电协议、1Xrtt和短消息服务,并包括提供对网络的本地无线连接的802.11和802.11b(WiFi)协议、和蓝牙协议。
根据其他实施例,应用或系统被容纳在连接到可移动安全数字(SD)卡接口15的SD卡上。SD卡接口15和通信链路13沿总线19与处理器17(也可实现来自图1的处理器118或128或服务器136)进行通信,该总线19还连接到存储器21和输入/输出(I/O)组件23、以及时钟25和位置系统27。
在一个实施例中,提供了I/O组件23以促进输入和输出操作。针对设备16的各个实施例的I/O组件23可以包括:输入组件,比如按钮、触摸传感器、多点触摸传感器、光学或视频传感器、语音传感器、触摸屏、邻近传感器、话筒、倾斜传感器以及重力开关;以及输出组件,比如显示设备、扬声器和或打印机端口。也可以使用其他I/O组件23。
时钟25说明性地包括输出时间和日期的真实时间时钟组件。时钟还可以说明性地为处理器17提供时序功能。
定位系统27说明性地包括输出设备16的当前地理位置的组件。这例如可以包括全球定位系统(GPS)接收机、LORAN系统、航位推算系统、蜂窝三角测量系统或者其他定位系统。这例如还可以包括生成所期望的地图、导航线路和其它地理功能的测绘软件或导航软件。
存储器21存储操作系统29、网络设置31、应用33、应用配置设置35、数据存储37、通信驱动程序39以及通信配置设置41。存储器21可以包括所有类型的有形易失性和非易失性计算机可读存储器设备。其还可以包括计算机存储介质(下面描述)。存储器21存储计算机可读指令,所述指令在被处理器17执行时致使处理器根据所述指令执行计算机实现的步骤或功能。类似地,设备16可具有客户端业务系统24,该客户端业务系统可运行各种业务应用。处理器17可以也被其他组件激活以促进它们的功能性。
网络设置31的示例包括诸如代理信息、因特网连接信息以及测绘之类的事物。应用配置设置35包括为特定企业或用户定制应用的设置。通信配置设置41提供了用于与其他计算机进行通信的参数,并且包括诸如GPRS参数、SMS参数、连接用户名和口令之类的项目。
应用33可以是之前已经存储在设备16上的应用或是在使用期间安装的应用,但是这些应用可以是操作系统29的一部分,或者也可以在设备16之外被托管。
图6示出其中设备16是平板计算机600的一个实施例。在图6中,计算机600被示为具有显示屏602。屏幕602可以是触摸屏(使得来自用户手指的触摸姿势可以用于与应用交互)或者启用笔的界面,其接收来自笔或指示笔的输入。其还可以使用屏幕上虚拟键盘。当然,其还例如可以通过诸如无线链路或USB端口之类的合适的附连机制附连到键盘或其他用户输入设备。计算机600还可以说明性地接收语音输入。
图7和图8提供了可被使用的设备16的附加示例,但是也可以使用其他设备。在图7中,提供功能电话、智能电话或移动电话45作为设备16。电话45包括:一组小键盘47,其用于拨打电话号码;显示器49,其能够显示包括应用图像、图标、网页、照片和视频在内的图像;以及控制按钮51,其用于选择在显示器上示出的项目。电话包括天线53,该天线53用于接收诸如通用分组无线服务(GPRS)和1Xrtt之类的蜂窝电话信号以及短消息服务(SMS)信号。在一些实施例中,电话45还包括容纳安全数字(SD)卡57的SD卡槽55。
图8的移动设备是个人数字助理(PDA)59或多媒体播放器或平板计算设备等等(在此称为PDA 59)。PDA 59包括电感屏61,所述电感屏感测指示笔63(或其他指示器,诸如用户的手指)在该指示笔被置于屏幕之上时的位置。这允许用户在屏幕上选择、突出显示和移动项目以及绘图和书写。PDA 59还包括多个用户输入键或按钮(比如按钮65),其允许用户将显示器61上所显示的菜单选项或其他显示选项滚屏,并且允许用户在没有接触显示器61的情况下改变应用或选择用户输入功能。尽管未被示出,但是PDA 59可以包括允许与其他计算机进行无线通信的内置天线和红外发射机/接收机、以及允许与其他计算设备的硬件连接的连接端口。这样的硬件连接通常是通过经由串行或USB端口连接到其他计算机的支架来完成的。因此,这些连接是非网络连接。在一个实施例中,移动设备59还包括容纳SD卡69的SD卡槽67。
图9类似于图7,不同之处在于电话是智能电话71。智能电话71具有显示图标或图块或其他用户输入机制75的触敏显示器73。机制75可由用户用来运行应用、进行呼叫、执行数据传输操作,等等。一般而言,智能电话71被构建在移动操作系统上且提供比功能电话更高级的计算能力和连接性。
注意,设备16的其他形式是可能的。
图10是其中可采用架构100或其一部分(作为示例)的计算环境的一个实施例。参考图10,用于实现一些实施例的示例性系统包括计算机810形式的通用计算设备。计算机810的组件可以包括,但不限于,处理单元820(可以包括处理器118或128或服务器136)、系统存储器830和将包括系统存储器在内的各种系统组件耦合至处理单元820的系统总线821。系统总线821可以是若干类型的总线结构中的任一种,包括存储器总线或存储器控制器、外围总线和使用各种总线架构中的任一种的局部总线。作为示例而非限制,这样的架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和外围部件互连(PCI)总线(也称为夹层(Mezzanine)总线)。参考图1描述的存储器和程序可被部署在图10的对应部分中。
计算机810通常包括各种计算机可读介质。计算机可读介质可以是能由计算机810访问的任何可用介质,而且包含易失性和非易失性介质、可移动和不可移动介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质不同于且不包括已调制数据信号或载波。计算机存储介质包括硬件存储介质,该硬件存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的任何方法和技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、或能用于存储所需信息且可以由计算机810访问的任何其它介质。通信介质通常具体化计算机可读指令、数据结构、程序模块或传输机制中的其他数据,并包括任何信息递送介质。术语“已调制数据信号”是指使得以在信号中编码信息的方式来设置或改变其一个或多个特性的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。上述任何组合也应该包括在计算机可读的介质范围内。
系统存储器830包括易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM)831和随机存取存储器(RAM)832。包含诸如在启动期间帮助在计算机810内的元件之间传输信息的基本例程的基本输入/输出系统833(BIOS)通常存储在ROM 831中。RAM832通常包含处理单元820可立即访问和/或当前正在操作的数据和/或程序模块。作为示例而非限制,图10例示出了操作系统834、应用程序835、其它程序模块836和程序数据837。
计算机810还可以包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图10示出了从不可移动、非易失性磁介质中读取或向其写入的硬盘驱动器841,从可移动、非易失性磁盘852中读取或向其写入的磁盘驱动器851,以及从诸如CD ROM或其他光学介质等可移动、非易失性光盘856中读取或向其写入的光盘驱动器855。可在示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器841通常通过诸如接口840之类的不可移动存储器接口连接到系统总线821,并且磁盘驱动器851和光盘驱动器855通常通过诸如接口850之类的可移动存储器接口连接到系统总线821。
作为替换或补充,本文所述的功能可至少部分地由一个或多个硬件逻辑组件来执行。例如、但非限制,可使用的硬件逻辑组件的说明性类型包括现场可编程门阵列(FPGA)、程序专用的集成电路(ASIC)、程序专用的标准产品(ASSP)、片上系统系统(SOC)、复杂可编程逻辑器件(CPLD)、等等。
上文讨论并在图10中示出的驱动器及其相关联的计算机存储介质为计算机810提供了对计算机可读指令、数据结构、程序模块和其他数据的存储。例如,在图10中,硬盘驱动器841被示为存储操作系统844、应用程序845、其他程序模块846和程序数据847。注意,这些组件可与操作系统834、应用程序835、其它程序模块836和程序数据837相同,也可与它们不同。在此操作系统844、应用程序845、其它程序模块846以及程序数据847被给予了不同的编号,以至少说明它们是不同的副本。
用户可以通过诸如键盘862、话筒863以及诸如鼠标、跟踪球或触摸垫等定点设备861等输入设备来将命令和信息输入至计算机810中。其它输入设备(未示出)可以包括操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等。这些以及其它输入设备通常通过耦合到系统总线的用户输入接口860连接到处理单元820,但也可通过诸如并行端口、游戏端口或通用串行总线(USB)之类的其它接口和总线结构来连接。视觉显示器891或其他类型的显示设备也经由诸如视频接口890之类的接口连接至系统总线821。除了监视器以外,计算机还可包括诸如扬声器897和打印机896之类的其它外围输出设备,它们可通过输出外围接口895来连接。
计算机810使用到诸如远程计算机880等一个或多个远程计算机的逻辑连接在网络化环境中操作。远程计算机880可以是个人计算机、手持设备、服务器、路由器、网络PC、对等设备或其它常见的网络节点,且一般包括以上关于计算机810描述的多个或所有的元件。图10中所示的逻辑连接包括局域网(LAN)871和广域网(WAN)873,但也可以包括其他网络。此类联网环境在办公室、企业范围的计算机网络、内联网和因特网中是常见的。
当在LAN联网环境中使用时,计算机810通过网络接口或适配器870连接到LAN871。当在WAN联网环境中使用时,计算机810通常包括调制解调器872或用于通过诸如因特网等WAN 873建立通信的其它手段。调制解调器872可以是内置的或外置的,可经由用户输入接口860或其它适当的机制连接到系统总线821。在联网环境中,相关于计算机810所示的程序模块或其部分可被存储在远程存储器存储设备中。作为示例而非限制,图10示出了远程应用程序885驻留在远程计算机880上。应当理解,所示的网络连接是示例性的,并且可使用在计算机之间建立通信链路的其它手段。
还应注意,本文描述的不同实施例可以按不同的方式来组合。即,一个或多个实施例的各部分可以与一个或多个其他实施例的各部分组合在一起。本文中构想了所有这些。
尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。更确切而言,上述具体特征和动作是作为实现权利要求的示例形式公开的。

Claims (9)

1.一种用于编译在计算机系统中建模的类型的编译系统,包括:
存储先前编译的类型的编译高速缓存;
递增编译组件,所述递增编译组件接收来自开发环境的编译请求,所述递增编译组件基于在所述开发环境中对所述计算机系统所做的改变以及通过搜索所述编译高速缓存来标识任何要被编译的类型是否被存储为先前编译的类型,只要已经被定制或开发的类型尚未被编译或者已编译的版本没有被存储在所述编译高速缓存中,就将所述类型标识为要被编译的类型,所述递增编译组件编译所标识的类型并使得所述所标识的类型能被运行时环境访问;以及
计算机处理器,所述计算机处理器是所述编译系统的功能部件且由所述递增编译组件激活来促进标识要被编译的类型、搜索所述编译高速缓存以及编译所述所标识的类型,
以及进一步包括:
管理组件,所述管理组件管理所述编译系统的存储器使用和操作,
其中所述递增编译组件编译所述所标识的类型以获得所述先前编译的类型并将所述先前编译的类型存储在所述编译高速缓存中,以及
其中所述管理组件间歇地确定来自所述编译系统的存储器使用是否满足一阈值水平,并且如果是,则使所述编译高速缓存的至少一部分失效。
2.如权利要求1所述的编译系统,其特征在于,所述管理组件间歇性地确定任何开发环境实例是否正在运行,并且如果否,则关闭所述编译系统。
3.如权利要求1所述的编译系统,其特征在于,所述管理组件间歇性地确定所述编译系统是否空闲了预定阈值量,并且如果是,则关闭所述编译系统。
4.如权利要求1所述的编译系统,其特征在于,所述编译高速缓存、所述递增编译组件以及所述计算机处理器是集成开发环境IDE的部分。
5.如权利要求4所述的编译系统,其特征在于,所述IDE被配置成接收创建和定制模型和可编译类型的开发输入。
6.一种开发对类型建模的软件系统的计算机实现的方法,包括:
接收使类型被编译的请求;
基于在开发环境中对所述计算机系统所做的改变以及基于已经被编译并被存储在编译高速缓存中的类型,只要计算机系统中已被定制或开发的类型的子集尚未被编译或者已编译的版本没有被存储在编译高速缓存中,就将要编译的类型标识为所述子集;以及
编译所标识的类型以获得先前编译的类型,
以及进一步包括:
将所述先前编译的类型存储在所述编译高速缓存中,
将所述先前编译的类型发送到运行时环境中以被运行;以及
重复接收请求、标识类型、编译所标识的类型、以及存储先前编译的类型的步骤,以及
间歇性地确定所述编译高速缓存的存储器使用是否满足一阈值,并且如果是,则使所述编译高速缓存的至少一部分失效。
7.如权利要求6所述的计算机实现的方法,其特征在于,接收编译请求、标识类型以及编译的步骤由编译代理执行,并且所述方法进一步包括:
间歇性地确定所述开发环境的任何实例是否正在运行,并且如果否,则关闭所述编译代理;以及
间歇性地确定所述编译代理是否已空闲了阈值时间段,并且如果是,则关闭所述编译代理。
8.如权利要求6所述的计算机实现的方法,其特征在于,还包括:
在所述开发环境处接收开发所述类型的开发输入;以及
基于所述开发输入来创建或定制可编译类型的模型。
9.一种储存计算机可执行指令的计算机可读存储介质,所述计算机可执行指令在被计算机执行时,使得所述计算机执行一种方法,所述方法包括:
接收使在计算机系统中建模的类型被编译的请求;
基于在开发环境中对计算机系统所做的改变以及基于已经被编译并被存储在编译高速缓存中的类型,只要计算机系统中已经被定制或开发的类型的子集尚未被编译或者已编译的版本没有被存储在编译高速缓存中,就将要编译的类型标识为所述子集;
编译所标识的类型以获得先前编译的类型;
将所述先前编译的类型存储在所述编译高速缓存中;
将所述先前编译的类型发送到运行时环境以被运行;
重复接收请求、标识类型、编译所标识的类型、以及存储先前编译的类型的步骤;以及
间歇性地确定所述编译高速缓存的存储器使用是否满足一阈值,并且如果是,则使所述编译高速缓存的至少一部分失效。
CN201480057456.XA 2013-10-18 2014-10-14 用于从交互式开发环境递增地编译软件制品的方法和系统 Active CN105723337B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/058,082 2013-10-18
US14/058,082 US9600256B2 (en) 2013-10-18 2013-10-18 Incrementally compiling software artifacts from an interactive development environment
PCT/US2014/060319 WO2015057592A1 (en) 2013-10-18 2014-10-14 Incrementally compiling software artifacts from an interactive development environment

Publications (2)

Publication Number Publication Date
CN105723337A CN105723337A (zh) 2016-06-29
CN105723337B true CN105723337B (zh) 2019-04-30

Family

ID=51866320

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480057456.XA Active CN105723337B (zh) 2013-10-18 2014-10-14 用于从交互式开发环境递增地编译软件制品的方法和系统

Country Status (7)

Country Link
US (1) US9600256B2 (zh)
EP (1) EP3058460B1 (zh)
JP (1) JP6529505B2 (zh)
KR (1) KR102193404B1 (zh)
CN (1) CN105723337B (zh)
CA (1) CA2924871A1 (zh)
WO (1) WO2015057592A1 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9442707B2 (en) * 2014-06-25 2016-09-13 Microsoft Technology Licensing, Llc Incremental whole program compilation of code
US10554709B2 (en) * 2014-07-08 2020-02-04 Microsoft Technology Licensing, Llc Stream processing utilizing virtual processing agents
CN104915214B (zh) * 2015-06-25 2018-09-07 走遍世界(北京)信息技术有限公司 系统的发布方法及装置
US10242119B1 (en) * 2015-09-28 2019-03-26 Amazon Technologies, Inc. Systems and methods for displaying web content
US10311217B2 (en) * 2016-12-09 2019-06-04 Microsoft Technology Licensing, Llc Application piracy prevention with secure enclave protection of automatically modularized functions
US10216615B2 (en) * 2017-06-30 2019-02-26 Sap Se Debuggable instance code in a cloud-based instance platform environment
CN109933326B (zh) * 2017-12-15 2023-03-17 北京奇虎科技有限公司 改写代码的编译方法、装置及相应终端
JP6890557B2 (ja) 2018-01-17 2021-06-18 株式会社日立製作所 分析モデル作成システム、プログラミング装置および分析モデル作成方法
CN109358841B (zh) * 2018-08-15 2024-04-30 中国平安人寿保险股份有限公司 网页应用开发编译方法、装置及存储设备、计算机设备
US11115279B2 (en) 2018-12-07 2021-09-07 Hewlett Packard Enterprise Development Lp Client server model for multiple document editor
US11182145B2 (en) * 2019-03-15 2021-11-23 International Business Machines Corporation Optimizing updates to distributed data processing applications
CN112181422A (zh) * 2020-09-02 2021-01-05 苏州浪潮智能科技有限公司 一种Hadoop编译方法、装置及计算机可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101669111A (zh) * 2007-04-20 2010-03-10 微软公司 用于封闭系统的编程框架
CN102362272A (zh) * 2009-03-25 2012-02-22 微软公司 移动应用程序的设备相关的按需编译和部署
CN102707942A (zh) * 2011-02-28 2012-10-03 微软公司 操作系统体验状态

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6519767B1 (en) 1995-06-07 2003-02-11 Microsoft Corporation Compiler and method for automatically building version compatible object applications
US5854932A (en) 1995-08-17 1998-12-29 Microsoft Corporation Compiler and method for avoiding unnecessary recompilation
US20020147969A1 (en) * 1998-10-21 2002-10-10 Richard A. Lethin Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
JP2002082811A (ja) * 2000-06-28 2002-03-22 Hitachi Ltd コンパイル方法および記録媒体
GB2373069B (en) * 2001-03-05 2005-03-23 Ibm Method, apparatus and computer program product for integrating heterogeneous systems
US7536386B2 (en) * 2003-03-27 2009-05-19 Microsoft Corporation System and method for sharing items in a computer system
US7086041B2 (en) * 2003-06-27 2006-08-01 Microsoft Corporation Extensible type system for representing and checking consistency of program components during the process of compilation
US7665075B1 (en) * 2004-03-17 2010-02-16 Sun Microsystems, Inc. Methods for sharing of dynamically compiled code across class loaders by making the compiled code loader reentrant
US7530058B2 (en) * 2004-05-28 2009-05-05 Microsoft Corporation Non-compile pages
US7493604B2 (en) * 2004-10-21 2009-02-17 Microsoft Corporation Conditional compilation of intermediate language code based on current environment
US8266605B2 (en) * 2006-02-22 2012-09-11 Wind River Systems, Inc. Method and system for optimizing performance based on cache analysis
JP2007233472A (ja) * 2006-02-27 2007-09-13 Canon Inc 情報処理装置、情報処理装置の制御方法および制御プログラム
US7480767B2 (en) * 2006-06-15 2009-01-20 Sap Ag Cache with time-based purging and computation of purged items
US8375368B2 (en) * 2006-06-20 2013-02-12 Google Inc. Systems and methods for profiling an application running on a parallel-processing computer system
US8381202B2 (en) * 2006-06-20 2013-02-19 Google Inc. Runtime system for executing an application in a parallel-processing computer system
US8108844B2 (en) * 2006-06-20 2012-01-31 Google Inc. Systems and methods for dynamically choosing a processing element for a compute kernel
US8146066B2 (en) * 2006-06-20 2012-03-27 Google Inc. Systems and methods for caching compute kernels for an application running on a parallel-processing computer system
US8443348B2 (en) * 2006-06-20 2013-05-14 Google Inc. Application program interface of a parallel-processing computer system that supports multiple programming languages
US7814486B2 (en) * 2006-06-20 2010-10-12 Google Inc. Multi-thread runtime system
US8479178B2 (en) * 2008-06-27 2013-07-02 Microsoft Corporation Compiler in a managed application context
US8943482B2 (en) * 2009-05-15 2015-01-27 International Business Machines Corporation Incrementally constructing executable code for component-based applications
US8677329B2 (en) 2009-06-03 2014-03-18 Apple Inc. Methods and apparatuses for a compiler server
US8924922B2 (en) 2010-06-14 2014-12-30 Microsoft Corporation Pre-compiling hosted managed code
US9043765B2 (en) * 2011-11-09 2015-05-26 Microsoft Technology Licensing, Llc Simultaneously targeting multiple homogeneous and heterogeneous runtime environments

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101669111A (zh) * 2007-04-20 2010-03-10 微软公司 用于封闭系统的编程框架
CN102362272A (zh) * 2009-03-25 2012-02-22 微软公司 移动应用程序的设备相关的按需编译和部署
CN102707942A (zh) * 2011-02-28 2012-10-03 微软公司 操作系统体验状态

Also Published As

Publication number Publication date
KR102193404B1 (ko) 2020-12-21
US9600256B2 (en) 2017-03-21
CN105723337A (zh) 2016-06-29
EP3058460B1 (en) 2019-12-18
JP2016537755A (ja) 2016-12-01
KR20160074486A (ko) 2016-06-28
US20150113513A1 (en) 2015-04-23
CA2924871A1 (en) 2015-04-23
EP3058460A1 (en) 2016-08-24
WO2015057592A1 (en) 2015-04-23
JP6529505B2 (ja) 2019-06-12

Similar Documents

Publication Publication Date Title
CN105723337B (zh) 用于从交互式开发环境递增地编译软件制品的方法和系统
CN105229634B (zh) 数据迁移框架
CN105264492B (zh) 系统行为的自动发现
CN106471517B (zh) 对显示元素的因用户而异的可视化
CN105830019B (zh) 用于基本模型定制的集成环境
CN107710157A (zh) 多租户、租户特定的应用程序
US9934026B2 (en) Workflow generation and editing
CN106605234B (zh) 使用近场通信与许可控制共享内容
US9690689B2 (en) Test case generation in a development environment
CN106068521A (zh) 关于合规策略更新的应用的通信状态
CN106104459A (zh) 表单上自适应的基于键的导航
CN104737124B (zh) 用于提交服务的业务元数据的门户
CN106663090A (zh) 在编译期间将呈现元数据转换成浏览器可渲染格式
US10152308B2 (en) User interface display testing system
CN106164851B (zh) 基于对已实现的过程进行过程建模的计算机系统的自动配置
CN106062689A (zh) 知晓上下文的命令
US20150113499A1 (en) Runtime support for modeled customizations
US20160328219A1 (en) Mobile application development collaboration system
US9158505B2 (en) Specifying compiled language code in line with markup language code
CN105144220A (zh) 支持计算的基于约束的配置
US20150121343A1 (en) Test impact analysis using cross reference data and metadata
CN106663004A (zh) 订阅者定义的动态事件
CN103412740B (zh) 多顶层用户界面显示
US10705802B2 (en) Extensible and queryable strong types
CN107851269A (zh) 计算系统中的引擎的可扩展性

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant