KR101793113B1 - 독립적인 애플리케이션 스토어를 통한 웹 애플리케이션의 호환성 및 최적화 - Google Patents

독립적인 애플리케이션 스토어를 통한 웹 애플리케이션의 호환성 및 최적화 Download PDF

Info

Publication number
KR101793113B1
KR101793113B1 KR1020157033734A KR20157033734A KR101793113B1 KR 101793113 B1 KR101793113 B1 KR 101793113B1 KR 1020157033734 A KR1020157033734 A KR 1020157033734A KR 20157033734 A KR20157033734 A KR 20157033734A KR 101793113 B1 KR101793113 B1 KR 101793113B1
Authority
KR
South Korea
Prior art keywords
optimization
web application
suggestions
application
compatibility
Prior art date
Application number
KR1020157033734A
Other languages
English (en)
Other versions
KR20160004354A (ko
Inventor
리차드 알 윈터톤
Original Assignee
인텔 코포레이션
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 인텔 코포레이션 filed Critical 인텔 코포레이션
Publication of KR20160004354A publication Critical patent/KR20160004354A/ko
Application granted granted Critical
Publication of KR101793113B1 publication Critical patent/KR101793113B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)

Abstract

복수의 상이한 애플리케이션 스토어와 연관된 구성 옵션의 세트를 식별하고, 개발 환경에서 웹 애플리케이션을 위한 하나 이상의 호환성 제안을 생성하기 위해 구성 옵션의 세트를 사용하는 시스템 및 방법이 제공될 수 있다. 부가적으로, 구성 옵션의 세트는 개발 환경에서 웹 애플리케이션을 위한 하나 이상의 최적화 제안을 생성하는데 사용될 수 있고, 하나 이상의 호환성 제안 및 하나 이상의 최적화 제안은 복수의 상이한 애플리케이션 스토어의 특정 애플리케이션 스토어에 특정할 수 있다. 일 예에서, 웹 애플리케이션과 연관된 실행시간 정보가 식별되고, 실행시간 정보는 하나 이상의 최적화 제안 중 적어도 하나를 생성하는데 사용된다.

Description

독립적인 애플리케이션 스토어를 통한 웹 애플리케이션의 호환성 및 최적화{COMPATIBILITY AND OPTIMIZATION OF WEB APPLICATIONS ACROSS INDEPENDENT APPLICATION STORES}
실시예는 일반적으로 웹 애플리케이션 개발(web application development)에 관한 것이다. 더 구체적으로, 실시예는 독립적인 애플리케이션 스토어를 통한 웹 애플리케이션의 호환성 및 최적화에 관한 것이다.
브라우저 및 웹 애플리케이션 개발자는 통상적으로 최종 사용자에게 향상된 기능성을 제공하기 위해, JAVASCRIPT, HTML (hypertext markup language), CSS (cascading style sheets) 등과 같은 고급 프로그래밍 언어로 소스 코드를 기록할 수 있다. 게다가, 웹 애플리케이션은 상이한 애플리케이션 스토어를 거쳐 다운로드해서 최종 사용자에 이용 가능해질 수 있고, 각각의 애플리케이션 스토어는 특정 플랫폼 및/또는 운영 체제(operating system: OS) 요구를 가질 수 있다. 웹 애플리케이션의 고급 프로그래밍 언어를 각각의 애플리케이션 스토어의 요구에 맞춤화하는 것은 상당한 과제를 제시할 수 있다.
실시예의 다양한 장점은 이하의 상세한 설명 및 첨부된 청구범위를 숙독함으로써, 그리고 이하의 도면을 참조함으로써 당 기술 분야의 숙련자에게 명백해질 것이다.
도 1은 실시예에 따른 웹 애플리케이션 개발 환경의 예의 블록 다이어그램이다.
도 2는 실시예에 따른 웹 애플리케이션을 개발하는 방법의 예의 흐름도이다.
도 3은 실시예에 따른 로직 아키텍처의 예의 블록 다이어그램이다.
도 4는 실시예에 따른 소프트웨어 스택의 예의 블록 다이어그램이다.
도 5는 실시예에 따른 프로세서의 예의 블록 다이어그램이다.
도 6은 실시예에 따른 시스템의 예의 블록 다이어그램이다.
이제, 도 1을 참조하면, 프로그래머(12)가 다양한 상이한 애플리케이션 스토어(16)(16a 내지 16c)에 맞춤화된 웹 애플리케이션(14)(14a 내지 14c)을 생성하기 위해 개발 툴(10)을 사용하는 웹 애플리케이션 개발 환경이 도시되어 있다. 맞춤화된 웹 애플리케이션(14)은 예를 들어, JAVASCRIPT, HTML 및/또는 CSS와 같은 하나 이상의 고급 프로그래밍 언어로 기록될 수 있고, 여기서 각각의 애플리케이션 스토어(16)는 상이한 OS 요구 및/또는 타겟 플랫폼 요구(24)를 가질 수 있다. 예를 들어, 제 1 애플리케이션 스토어("애플리케이션 스토어 #1")는 일반적으로 WINDOWS 스토어 관련 OS 요구(18) 및 타겟 플랫폼 요구(20)를 갖는 MICROSOFT 대응 애플리케이션에 전용될 수 있고, 제 2 애플리케이션 스토어("애플리케이션 스토어 #2")는 일반적으로 ANDROID Play 관련 OS 요구(22) 및 타겟 플랫폼 요구를 갖는 GOOGLE 대응 애플리케이션에 전용될 수 있고, 제 3 애플리케이션 스토어("애플리케이션 스토어 #3")는 일반적으로 ITUNES 관련 OS 요구(26) 및 타겟 플랫폼 요구(28)를 갖는 APPLE 대응 애플리케이션에 전용될 수 있는 등이다.
예시된 예에서, 개발 툴(10)은 상이한 애플리케이션 스토어(16)와 연관된 구성 옵션(30)의 세트를 식별하고, 이 옵션(30)을 사용해서 개발 환경에서 웹 애플리케이션(14)을 위한 하나 이상의 호환성 제안(32)을 생성할 수 있다. 개발 툴(10)은 또한 옵션(30)을 사용해서 개발 환경에서 웹 애플리케이션(14)을 위한 하나 이상의 최적화(예를 들어, 성능 및/또는 전력) 제안(34)을 생성할 수 있다. 프로그래머(12)에 의해 수동으로 구현되거나 또는 개발 툴(10)에 의해 자동으로 구현될 수 있는 제안(32, 34)은 웹 애플리케이션(14)의 하나 이상의 고급 프로그래밍 언어에 적합될 수도 있다. 예를 들어, 제안(32, 34)은 호환성 및 최적화가 성취될 수 있게 하는 JAVASCRIPT, HTML 및 CSS 대안을 제공할 수 있다.
더 상세히 설명되는 바와 같이, 개발 툴(10)은 또한 웹 애플리케이션과 연관된 실행시간 정보(36)(예를 들어, 캐시 미스(cache miss)의 수, 페이지 미스의 수, 중앙 처리 유닛/CPU 사용률 등)를 식별할 수 있고, 여기서 실행시간 정보(36)는 또한 최적화 제안(34)을 생성하는데 사용된다. 이러한 접근법은, 몇몇 JAVASCRIPT 코드가 온더플라이(on-the-fly)로 변환되어 실행되면(예를 들어, just in time/JIT 프로세싱), 특히 유리할 수 있다. 특히, 실행시간 정보(10)는 맞춤화된 웹 애플리케이션(14) 중 하나 이상에 의해 생성되어 웹 애플리케이션(14)의 후속의 버전, 업데이트 및/또는 릴리즈를 위해 사용될 수 있다(예를 들어, 최종 사용자가 선택하면 통계적 정보로서 수집됨). 예를 들어, 제 1 계측 라이브러리(instrumentation library)(11)가 제 1 웹 애플리케이션(14a) 내에 포함될 수 있고, 제 2 계측 라이브러리(13)가 제 2 웹 애플리케이션(14b) 내에 포함될 수 있고, 제 3 계측 라이브러리(15)가 제 3 웹 애플리케이션(14c) 내에 포함될 수 있는 등이고, 계측 라이브러리(11, 13, 15)는 실행시간 정보(36)를 생성하고 미래 사용을 위해 개발 툴(10)에 실행시간 정보(36)를 전송할 수 있다.
계측 라이브러리(11, 13, 15)는 타겟된 플랫폼에 따라 웹 애플리케이션(14) 내로 컴파일링될 수 있다. 예를 들어, 계측 라이브러리(11, 13, 15)는 ANDROID WEB VIEW 인터페이스, WINDOWS 8 사용자 인터페이스(user interface: UI) 내의 WinJs 네임스페이스(namespace)를 위한 JAVASCRIPT 특정 API, iOS 애플리케이션을 위한 JAVASCRIPT 바이트코드 또는 LLVM 바이트코드 내에 포함된 바이트코드의 형태일 수 있다. 프로그래머(12)가 구성 선택(38)을 작성하면, 개발 툴(10)은 이들 선택(38), 뿐만 아니라 애플리케이션 스토어(16)의 OS 요구 및/또는 타겟 플랫폼 요구에 기초하여 웹 애플리케이션(14)을 생성할 수 있다. 따라서, 단지 웹 애플리케이션(14) 주위에 플랫폼에 특유한(specific) 랩퍼(wrapper)를 배치하기보다는, 예시된 접근법은 프로그래머(12)의 관점으로부터 더 융통성 있는 솔루션을 제공한다.
예를 들어, 호환성 제안(32)은, 프로그래머(12)가 맞춤화된 웹 애플리케이션(14)이 애플리케이션 스토어(16)의 임의의 API 또는 다른 요구에 부합하는 것을 보장할 수 있게 한다. 최적화 제안(34)은 성능 및/또는 전력 고려사항을 처리함으로써 호환성 제안(32)을 넘어 확장할 수 있다. 더 구체적으로, 최적화 제안(34)은 예를 들어, CSS 파일 편성(file organization)(예를 들어, 전이 설정, 스와이프 설정, 페이드 설정 등과 같은 스타일 및/또는 특정 효과), JavaScript 파일 편성, 애플리케이션 프로그래밍 인터페이스(API) 선택, 정지 화상 포맷, 타임아웃 설정, 비디오 코덱 선택, 비디오 포맷 등을 식별할 수도 있으며, 이는 특정 웹 애플리케이션, OS 및/또는 타겟 플랫폼에 대한 전력 대 성능의 균형을 맞추고 있다.
예를 들어, CSS는 일반적으로 레이아웃, 컬러 및 폰트와 같은 요소를 포함하는 문서 프리젠테이션으로부터 문서 콘텐트(HTML 또는 유사한 마크업 언어로 기록됨)의 분리를 가능하게 할 수 있다. CSS 요소의 프로세싱 및 렌더링은 사용되는 아이템 및 스타일의 수에 의존할 수 있다. 실제로, HTML5(하이퍼텍스트 마크업 언어 5, 예를 들어 HTML5 에디터 드래프트 8 2012년 5월, W3C)에 의해 구현된 CSS 전이 및 페이드와 같은 특정 고성능 특징은 플랫폼의 전력을 상당히 사용할 수 있다. 이러한 경우에, 최적화 제안(34)은, CSS 변환 및/또는 페이드가 웹 애플리케이션의 성능과 밀접하게 관계되지 않는다면, CSS 변환 및/또는 페이드가 행해지는 레이트를 변화시키거나 또는 CSS 전이 및/또는 페이드의 사용을 함께 포기할 수도 있다.
다른 예에서, 특정 OS(예를 들어, WINDOWS 8)는, 추천되는 사용자 경험(user experience: UX) API 및 제공되지만 추천되지 않은 다른 사용자 경험을 포함할 수 있다. 프로그래머(12)가 API를 사용하고 있으면, 대안의 API가 제안될 수도 있다. 따라서, 개발 툴(10)은 예를 들어, 최적화 제안(34)으로서 애플리케이션 개발 프로세스 중에 페이지 리프레시를 위한 "requestAnimationFrame" API의 사용을 제안할 수 있다. 부가적으로, 특정 JAVASCRIPT API가 특정 플랫폼 및/또는 애플리케이션 스토어에 기록되는 코드의 양을 최소화하기 위해 제안될 수 있다. 제안된 JAVASCRIPT API는 주로 플랫폼에 특유하지 않게 유지될 수 있고, 여기서 파라미터가 소정의 플랫폼에 의해 요구된 정도에 추가된다. 부가적으로, JAVASCRIPT 엔진이 더 많은 최적화된 코드를 생성하는 것을 더 용이하게 할 개발 툴(10)에 의한 제안이 존재할 수도 있다. 이러한 접근법은 다수의 애플리케이션 스토어를 걸친 웹 애플리케이션의 수락을 용이하게 하는 동시에 융통성을 증가시킬 수 있다.
더욱이, 정지 화상 포맷이 전력 및/또는 성능에 영향을 미칠 수 있다. 예를 들어, PNG(Portable Network Graphics) 파일은 통상적으로 JPG(Joint Photographic Experts Group) 파일보다 크고, 전송 및 렌더링에 더 많은 전력이 사용될 수 있다. 다른 한편으로는, PNG 파일은 특정 컬러가 투명하게 되는 것을 가능하게 하는 알파 채널을 포함하고, 반면에 JPG 파일은 알파 채널을 갖지 않는다. 따라서, 개발 툴(10)이 웹 애플리케이션이 알파 채널을 사용하지 않는다고 판정하면, 최적화 제안(34)은 프로그래머(12)가 PNG 파일 포맷을 사용하는 것으로부터 정지 화상 렌더링을 위한 JPG 파일 포맷으로 스위칭하는 것을 추천할 수도 있다.
또 다른 예에서, 개발 툴(10)은, 타임아웃 설정(예를 들어, setTimeout)이 비교적 작은값(예를 들어, 1 ms)으로 구성되어 있어서 성능을 향상시키지 않고 배터리 수명에 부정적인 영향을 미칠 수 있다고 판정할 수도 있다. 이러한 경우에, 최적화 제안(34)은 타임아웃 설정이 증가되는 것을 추천할 수도 있다. 최적화 제안(34)의 다른 예는 타겟 플랫폼 상에서 하드웨어 가속이 구현되고 있는지 여부, 어느 유형의 하드웨어가 타겟 플랫폼 상에 제시되는지 등에 기초하여 특정 비디오 코덱 및/또는 비디오 포맷을 추천하는 것을 포함하지만, 이들에 한정되는 것은 아니다.
이제, 도 2를 참조하면, 웹 애플리케이션 개발 방법(40)이 도시되어 있다. 방법(40)은 랜덤 액세스 메모리(random access memory: RAM), 판독 전용 메모리(read only memory: ROM), 프로그램가능 ROM(programmable ROM: PROM), 플래시 메모리 등과 같은 머신- 또는 컴퓨터-판독가능 매체에 저장된 로직 명령어 및/또는 펌웨어의 세트로서, 예를 들어 프로그램 로직 어레이(programmable logic arrays: PLAs), 필드 프로그램가능 게이트 어레이(field programmable gate arrays: FPGAs), 복합 프로그램가능 로직 디바이스(complex programmable logic devices: CPLDs)와 같은 구성가능한 로직으로, 예를 들어 응용 주문형 집적 회로(application specific integrated circuit: ASIC), 상보형 금속 산화물 반도체(complementary metal oxide semiconductor: CMOS) 또는 트랜지스터-트랜지스터 로직(transistor-transistor logic: TTL) 기술과 같은 회로 기술을 사용하는 고정-기능 로직 하드웨어로, 또는 이들의 임의의 조합으로 구현될 수 있다. 예를 들어, 방법(40)에 개시된 동작들을 수행하기 위한 컴퓨터 프로그램 코드는 C++ 등과 같은 객체 지향성 프로그래밍 언어 및 "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어와 같은 종래의 절차적 프로그래밍 언어를 포함하는 하나 이상의 프로그래밍 언어의 임의의 조합으로 기록될 수 있다. 더욱이, 방법(40)은 전술된 회로 기술 중 임의의 하나를 사용하여 구현될 수 있다.
도시된 프로세싱 블록(42)은 복수의 상이한 애플리케이션 스토어와 연관된 구성 옵션의 세트를 식별하는 것을 제공한다. 더 상세히 설명되는 바와 같이, 구성 옵션은 라이브러리의 세트로서 구현될 수 있다. 구성 옵션의 세트는 개발 환경에서 웹 애플리케이션을 위한 하나 이상의 호환성 제안을 생성하기 위해 블록(44)에서 사용될 수 있고, 여기서 호환성 제안은 복수의 상이한 애플리케이션 스토어에서 특정 애플리케이션 스토어에 특유하다. 부가적으로, 도시된 블록(46)은 개발 환경에서 웹 애플리케이션을 위한 하나 이상의 최적화 제안을 생성하기 위해 구성 옵션의 세트를 사용한다. 최적화 제안은 특정 애플리케이션 스토어에 또한 특유할 수 있다. 전술된 바와 같이, 하나 이상의 최적화 제안 중 적어도 하나는 성능 고려사항 및/또는 전력 고려사항을 처리할 수도 있다.
구성 선택의 세트는 블록(48)에서 식별될 수도 있고, 여기서 도시된 블록(50)은 구성 선택의 세트, 특정 애플리케이션 스토어의 하나 이상의 OS 요구, 특정 애플리케이션 스토어의 하나 이상의 타겟 플랫폼 요구 등에 기초하여 맞춤화된 웹 애플리케이션을 생성한다. 블록(50)은 웹 애플리케이션에 계측 라이브러리를 포함하는 것을 수반할 수 있고, 여기서 계측 라이브러리는 최적화 제안을 생성하는데 또한 사용될 수 있는 실행시간 정보를 식별한다. 맞춤화된 웹 애플리케이션은 블록(52)에서 특정 애플리케이션 스토어에 포팅될(ported) 수도 있다.
도 3은 웹 애플리케이션을 개발하는데 사용될 수 있는 개발 툴의 로직 아키텍처(54)(54a 내지 54f)를 도시하고 있다. 도시된 예에서, 옵션 모듈(54a)은 복수의 상이한 애플리케이션 스토어마다의 구성 옵션의 세트를 식별한다. 구성 옵션의 세트는 호환성 라이브러리(56), 최적화 라이브러리(58) 및/또는 계측 라이브러리(60)에 내장될 수 있다. 호환성 라이브러리(56)는 다양한 사용자, 웹 및/또는 브라우저 인터페이스 예를 들어, WINDOWS 8 UI JAVASCRIPT 인터페이스, ANDROID HTML 웹 인터페이스, iOS HTML 웹 인터페이스, IE(Internet Explorer) 브라우저 인터페이스, FIREFOX 브라우저 인터페이스, CHROME 브라우저 인터페이스, SAFARI 브라우저 인터페이스 등과의 HTML, JAVASCRIPT 및 CSS 컴플라이언스를 지원할 수도 있다. 도시된 호환성 라이브러리(56)는 개발 환경에서 웹 애플리케이션을 위한 호환성 제안을 생성하기 위해 맞춤화 레이어(상세히 설명될 것임)의 호환성 모듈(54b)과 함께 동작할 수 있다.
게다가, 최적화 라이브러리(58)는 개발 환경에서 웹 애플리케이션에 대한 최적화 제안을 생성하기 위해 맞춤화 레이어의 최적화 모듈(54c)과 함께 동작할 수 있다. 전술된 바와 같이, 최적화 제안은 성능 고려사항 및/또는 전력 고려사항을 처리할 수 있다. 일 예에서, 최적화 제안은 CSS 파일 편성(예를 들어, 스타일 효과, 특정 효과, 전이 설정, 스와이프 설정, 페이드 설정 등), JAVASCRIPT 파일 편성, API 선택, 정지 화상 포맷, 비디오 코덱 선택, 비디오 포맷 등, 또는 이들의 임의의 조합을 식별할 수 있다. 웹 애플리케이션 내에 또한 포함될 수 있는 계측 라이브러리(60)는 웹 애플리케이션과 연관된 실행시간 정보를 식별할 수 있고, 여기서 실행시간 정보는 또한 하나 이상의 최적화 제안을 생성하는데 사용될 수 있다. 계측 라이브러리(60)는 예를 들어, VTUNE 소프트웨어 성능 분석 기능성, SEP(Sampling Enabling Product) 기능성 등, 뿐만 아니라 다양한 HTML, CSS 및 JAVASCRIPT 제안 옵션을 포함할 수 있다.
도시된 아키텍처(54)는 구성 선택의 세트를 식별하기 위한 선택 모듈(54d), 및 구성 선택의 세트, 특정 애플리케이션 스토어의 하나 이상의 OS 요구, 및 특정 애플리케이션 스토어의 하나 이상의 타겟 플랫폼 요구에 기초하여 웹 애플리케이션을 생성하기 위한 애플리케이션 모듈(54e)을 또한 포함한다. 게다가, 출력 모듈(54f)은 특정 애플리케이션 스토어에 웹 애플리케이션을 포팅할 수도 있다.
이제, 도 4를 참조하면, 고급 프로그래밍 언어로 기록된 웹 애플리케이션 레이어(64)가 호환성 모듈(54b) 및 최적화 모듈(54c)을 포함하는 맞춤화 레이어(66) 위에 있는 소프트웨어 스택(62)이 도시되어 있다. 도시된 맞춤화 레이어(66)는 호환성 제안 뿐만 아니라 최적화 제안의 생성을 용이하게 하기 위한 다양한 라이브러리를 포함할 수 있는 옵션 모듈(54a) 및 인터페이스(68)(68a 내지 68d)의 세트 위에 있다. 맞춤화 레이어(66)는 따라서, 예를 들어, JAVASCRIPT, HTML 및 CSS 코드와 같은 고수준 소스 코드와 관련하여 성능-전력 밸런서 및 호환성 분석기로서 기능할 수 있다. 각각의 인터페이스(68)는 특정 유형의 OS 및/또는 브라우저(예를 들어, WINDOWS 8 UI JAVASCRIPT 인터페이스, ANDROID HTML 웹 인터페이스, iOS HTML 웹 인터페이스, IE 브라우저 인터페이스, FIREFOX 브라우저인터페이스, CHROME 브라우저 인터페이스, SAFARI 브라우저 인터페이스)에 특유할 수 있다. 네이티브 OS(70) 레이어는 인터페이스(68) 및 옵션 모듈(54a) 아래에 상주할 수도 있다.
도 5는 일 실시예에 따른 프로세서 코어(200)를 도시하고 있다. 프로세서 코어(200)는 마이크로프로세서, 임베디드 프로세서, 디지털 신호 프로세서(DSP), 네트워크 프로세서, 또는 코드를 실행하기 위한 다른 디바이스와 같은 임의의 유형의 프로세스용 코드일 수 있다. 단지 하나의 프로세서 코어(200)가 도 5에 도시되어 있지만, 프로세싱 요소는 대안적으로 하나 초과의 도 5에 도시된 프로세서 코어(200)를 포함할 수도 있다. 프로세서 코어(200)는 단일 스레드 코어일 수 있고, 또는 적어도 하나의 실시예에서 프로세서 코어(200)는 코어당 하나 초과의 하드웨어 스레드 콘텍스트(또는 "로직 프로세서")를 포함할 수 있는 점에서 멀티스레드일 수 있다.
도 5는 프로세서(200)에 결합된 메모리(270)를 또한 도시하고 있다. 메모리(270)는 당 기술 분야의 숙련자들에게 공지되거나 다른 방식으로 이용 가능한 바와 같은 임의의 광범위한 메모리(메모리 계층의 다양한 레이어를 포함함)일 수 있다. 메모리(270)는 프로세서(200) 코어에 의해 실행된 하나 이상의 코드(213) 명령어(들)을 포함할 수 있고, 여기서 코드(213)는 전술된 방법(40)(도 2) 및/또는 로직 아키텍처(54)(도 3)를 구현할 수 있다. 프로세서 코어(200)는 코드(213)에 의해 지시된 명령어의 프로그램 시퀀스를 따른다. 각각의 명령어는 프론트엔드부(210)를 입력할 수 있고, 하나 이상의 디코더(220)에 의해 프로세싱될 수 있다. 디코더(220)는 사전규정된 포맷의 고정폭 마이크로 동작과 같은 마이크로 동작을 그 출력으로서 생성할 수 있고, 또는 원본 코드(original code) 명령어를 반영하는 제어 신호를 생성할 수 있다. 도시된 프론트엔드(210)는 레지스터 리네이밍 로직(renaming logic)(225) 및 스케쥴링 로직(230)을 또한 포함하고, 이들은 일반적으로 리소스를 할당하고 실행을 위한 변환 명령어에 대응하는 동작을 대기열 형성한다.
실행 유닛(255-1 내지 255-N)의 세트를 갖는 실행 로직(250)을 포함하는 프로세서(200)가 도시되어 있다. 몇몇 실시예는 특정 기능 또는 기능의 세트에 전용된 다수의 실행 유닛을 포함할 수 있다. 다른 실시예는 단지 하나의 실행 유닛 또는 특정 기능을 수행할 수 있는 하나의 실행 유닛을 포함할 수 있다. 도시된 실행 로직(250)은 코드 명령어에 의해 지정된 동작을 수행한다.
코드 명령어에 의해 지정된 동작의 실행의 완료 후에, 백엔드 로직(260)은 코드(213)의 명령어를 리타이어한다(retire). 일 실시예에서, 프로세서(200)는 비순차적(out of order) 실행을 허용하지만, 명령어의 순차적(in order) 리타이어먼트를 요구한다. 리타이어먼트 로직(265)은 당 기술 분야의 숙련자들에게 공지된 바와 같은 다양한 포맷(예를 들어, 리오더 버퍼 등)을 취할 수 있다. 이 방식으로, 프로세서 코어(200)는 코드(213)의 실행 중에, 적어도 디코더에 의해 생성된 출력의 견지에서, 레지스터 리네이밍 로직(225)에 의해 이용된 하드웨어 레지스터 및 테이블, 및 실행 로직(250)에 의해 수정된 임의의 레지스터(도시 생략)로 변환된다.
도 5에는 도시되지 않았지만, 프로세싱 요소는 프로세서 코어(200)를 갖는 칩 상의 다른 요소를 포함할 수 있다. 예를 들어, 프로세싱 요소는 프로세서 코어(200)와 함께 메모리 제어 로직을 포함할 수 있다. 프로세싱 요소는 I/O 제어 로직을 포함할 수 있고, 그리고/또는 메모리 제어 로직과 통합된 I/O 제어 로직을 포함할 수 있다. 프로세싱 요소는 하나 이상의 캐시를 또한 포함할 수 있다.
이제, 도 6을 참조하면, 실시예에 따른 시스템(1000)의 블록 다이어그램이 도시되어 있다. 제 1 프로세싱 요소(1070) 및 제 2 프로세싱 요소(1080)를 포함하는 멀티프로세서 시스템(1000)이 도 6에 도시되어 있다. 2개의 프로세싱 요소(1070, 1080)가 도시되어 있지만, 시스템(1000)의 실시예는 단지 하나의 이러한 프로세싱 요소만을 또한 포함할 수 있다는 것이 이해되어야 한다.
시스템(1000)은 점대점 상호접속 시스템으로서 도시되어 있고, 여기서 제 1 프로세싱 요소(1070) 및 제 2 프로세싱 요소(1080)는 점대점 상호접속부(1050)를 거쳐 결합된다. 도 6에 도시된 임의의 또는 전체 상호접속부는 점대점 상호접속부보다는 멀티드롭 버스로서 구현될 수 있다는 것이 이해되어야 한다.
도 6에 도시된 바와 같이, 각각의 프로세싱 요소(1070, 1080)는 제 1 및 제 2 프로세서 코어(즉, 프로세서 코어(1074a, 1074b) 및 프로세서 코어(1084a, 1084b))를 포함하는 멀티코어 프로세서코어일 수 있다. 이러한 코어(1074, 1074b, 1084a, 1084b)는 도 5와 관련하여 전술된 것과 유사한 방식으로 명령어 코드를 실행하도록 구성될 수 있다.
각각의 프로세싱 요소(1070, 1080)는 적어도 하나의 공유된 캐시(1896a, 1896b)를 포함할 수 있다. 공유된 캐시(1896a, 1896b)는 코어(1074a, 1074b, 1084a, 1084b) 각각과 같은 프로세서의 하나 이상의 구성요소에 의해 이용되는 데이터(예를 들어, 명령어)를 저장할 수 있다. 예를 들어, 공유된 캐시(1896a, 1896b)는 프로세서의 구성요소에 의한 더 고속 액세스를 위해 메모리(1032, 1034) 내에 저장된 로컬 캐시 데이터일 수 있다. 하나 이상의 실시예에서, 공유된 캐시(1896a, 1896b)는 레벨 2(L2), 레벨 3(L3), 레벨 4(L4)와 같은 하나 이상의 미드-레벨 캐시, 또는 다른 레벨의 캐시, 라스트 레벨 캐시(LLC), 및/또는 이들의 조합을 포함할 수 있다.
단지 2개의 프로세싱 요소(1070, 1080)만을 갖고 도시되어 있지만, 실시예의 범주는 이와 같이 한정되는 것은 아니라는 것이 이해되어야 한다. 다른 실시예에서, 하나 이상의 부가의 프로세싱 요소가 소정의 프로세서에 존재할 수 있다. 대안적으로, 프로세싱 요소(1070, 1080) 중 하나 이상은 가속기 또는 필드 프로그램가능 게이트 어레이와 같은 프로세서 이외의 요소일 수 있다. 예를 들어, 부가의 프로세싱 요소(들)는 제 1 프로세서(1070)와 동일한 부가의 프로세서(들), 제 1 프로세서(1070)에 이종이거나 비대칭인 부가의 프로세서(들), 가속기(예를 들어, 그래픽 가속기 또는 디지털 신호 프로세싱(DSP) 유닛과 같은), 필드 프로그램가능 게이트 어레이, 또는 임의의 다른 프로세싱 요소를 포함할 수 있다. 아키텍처, 마이크로아키텍처, 열적, 전력 소비 특성 등을 포함하는 장점의 메트릭의 스펙트럼의 견지에서 프로세싱 요소(1070, 1080) 사이에 다양한 차이가 존재할 수 있다. 이들 차이는 프로세싱 요소(1070, 1080) 중에 비대칭성 및 이종성으로서 그 자체를 효과적으로 명시할 수 있다. 적어도 하나의 실시예에서, 다양한 프로세싱 요소(1070, 1080)가 동일한 다이 패키지 내에 존재할 수 있다.
제 1 프로세싱 요소(1070)는 메모리 콘트롤러 로직(memory controller logic: MC)(1072) 및 점대점(P-P) 인터페이스(1076, 1078)를 더 포함할 수 있다. 유사하게, 제 2 프로세싱 요소(1080)는 MC(1082) 및 P-P 인터페이스(1086, 1088)를 포함할 수 있다. 도 6에 도시된 바와 같이, MC(1072, 1082)는 각각의 메모리, 즉 각각의 프로세서에 로컬하게 연결되어 있는 메인 메모리의 부분일 수 있는 메모리(1032) 및 메모리(1034)에 프로세서를 결합한다. MC(1072, 1082)는 프로세싱 요소(1070, 1080) 내에 통합되어 있는 것으로서 도시되어 있지만, 대안 실시예에서, MC 로직은 그 내에 통합되어 있기보다는 프로세싱 요소(1070, 1080)의 외부의 별개의 로직일 수도 있다.
제 1 프로세싱 요소(1070) 및 제 2 프로세싱 요소(1080)는 P-P 상호접속부(1076, 1086)를 거쳐 I/O 서브시스템(1090)에 각각 결합될 수 있다. 도 6에 도시된 바와 같이, I/O 서브시스템(1090)은 P-P 인터페이스(1094, 1098)를 포함한다. 더욱이, I/O 서브시스템(1090)은 고성능 그래픽 엔진(1038)과 I/O 서브시스템(1090)을 결합하기 위한 인터페이스(1092)를 포함한다. 일 실시예에서, 버스(1049)는 I/O 서브시스템(1090)에 그래픽 엔진(1038)을 결합하는데 사용될 수 있다. 대안적으로, 점대점 상호접속부가 이들 구성요소를 결합할 수 있다.
이어서, I/O 서브시스템(1090)은 인터페이스(1096)를 거쳐 제 1 버스(1016)에 결합될 수 있다. 일 실시예에서, 제 1 버스(1016)는 주변 장치 상호접속(Peripheral Component Interconnect: PCI) 버스, 또는 PCI 익스프레스 버스 또는 다른 3세대 I/O 상호접속 버스와 같은 버스일 수 있지만, 실시예의 범주는 이와 같이 한정되는 것은 아니다.
도 6에 도시된 바와 같이, 다양한 I/O 디바이스(1014)(예를 들어, 카메라)가, 제 1 버스(1016)를 제 2 버스(1020)에 결합할 수 있는 버스 브리지(1018)와 함께, 제 1 버스(1016)에 결합될 수 있다. 일 실시예에서, 제 2 버스(1020)는 로우 핀 카운트(low pin count: LPC) 버스일 수 있다. 일 실시예에서, 예를 들어, 키보드/마우스(1012), 네트워크 콘트롤러/통신 디바이스(들)(1026)(이어서 컴퓨터 네트워크와 통신할 수 있음), 및 코드(1030)를 포함할 수 있는 디스크 드라이브 또는 다른 대용량 저장 디바이스와 같은 데이터 저장 유닛(1019)을 포함하는 다양한 디바이스가 제 2 버스(1020)에 결합될 수 있다. 코드(1030)는 전술된 방법들 중 하나 이상의 실시예를 수행하기 위한 명령어를 포함할 수 있다. 따라서, 도시된 코드(1030)는 전술된 방법(40)(도 2) 및/또는 로직 아키텍처(54)(도 3)를 구현할 수 있고, 코드(213)(도 5)에 유사할 수 있다. 또한, 오디오 I/O(1024)가 제 2 버스(1020)에 결합될 수 있다.
다른 실시예가 고려된다는 것을 주목하라. 예를 들어, 도 6의 점대점 아키텍처 대신에, 시스템은 멀티드롭 버스 또는 다른 이러한 통신 토폴로지를 구현할 수 있다. 또한, 도 6의 요소는 대안적으로 도 6에 도시된 것보다 많거나 적은 집적 칩을 사용하여 파티셔닝될 수도 있다.
부가의 주석 및 예:
예 1은 복수의 상이한 애플리케이션 스토어와 연관된 구성 옵션의 세트를 식별하는 옵션 모듈 및 개발 환경에서 웹 애플리케이션을 위한 하나 이상의 호환성 제안을 생성하기 위해 구성 옵션의 세트를 사용하는한 호환성 모듈을 포함하는 웹 애플리케이션을 개발하기 위한 장치를 포함할 수 있다. 장치는 개발 환경에서 웹 애플리케이션을 위한 하나 이상의 최적화 제안을 생성하기 위해 구성 옵션의 세트를 사용하는 최적화 모듈을 또한 포함할 수 있고, 하나 이상의 호환성 제안 및 하나 이상의 최적화 제안은 복수의 상이한 애플리케이션 스토어의 특정 애플리케이션 스토어에 특유하다.
예 2는 웹 애플리케이션과 연관된 실행시간 정보를 식별하는 계측 라이브러리를 더 포함하고, 실행시간 정보는 하나 이상의 최적화 제안 중 적어도 하나를 생성하는데 사용되는, 예 1의 장치를 포함할 수 있다.
예 3은 옵션 모듈은 웹 애플리케이션 내에 계측 라이브러리를 통합시키는, 예 2의 장치를 포함할 수 있다.
예 4는 하나 이상의 최적화 제안 중 적어도 하나는 성능 고려사항 또는 전력 고려사항 중 하나 이상을 처리하는, 예 1의 장치를 포함할 수 있다.
예 5는 하나 이상의 최적화 제안 중 적어도 하나는 캐스케이딩 스타일 시트(CSS) 파일 편성, JavaScript 파일 편성, 애플리케이션 프로그래밍 인터페이스(API) 선택, 정지 화상 포맷, 타임아웃 설정, 비디오 코덱 선택 또는 비디오 포맷 중 하나 이상을 식별하는, 예 1의 장치를 포함할 수 있다.
예 6은 CSS 파일 편성은 스타일 효과, 특정 효과, 전이 설정, 스와이프 설정 또는 페이드 설정 중 하나 이상을 포함하는, 예 5의 장치를 포함할 수 있다.
예 7은 구성 선택의 세트를 식별하는 선택 모듈, 및 구성 선택의 세트, 특정 애플리케이션 스토어의 하나 이상의 운영 체제 요구 및 특정 애플리케이션 스토어의 하나 이상의 타겟 플랫폼 요구에 기초하여 웹 애플리케이션을 생성하는 애플리케이션 모듈을 더 포함하는, 예 1 내지 6 중 어느 하나의 장치를 포함할 수 있다.
예 8은 특정 애플리케이션 스토어에 웹 애플리케이션을 포팅하는 출력 모듈을 더 포함하는, 예 7의 장치를 포함할 수 있다.
예 9는 옵션 모듈은 호환성 라이브러리 및 최적화 라이브러리를 포함하는, 예 1 내지 6 중 어느 하나의 장치를 포함할 수 있다.
예 10은 복수의 상이한 애플리케이션 스토어와 연관된 구성 옵션의 세트를 식별하는 단계 및 개발 환경에서 웹 애플리케이션을 위한 하나 이상의 호환성 제안을 생성하기 위해 구성 옵션의 세트를 사용하는 단계를 포함하는 웹 애플리케이션을 개발하는 방법을 포함할 수 있다. 방법은 개발 환경에서 웹 애플리케이션을 위한 하나 이상의 최적화 제안을 생성하기 위해 구성 옵션의 세트를 사용하는 단계를 또한 포함할 수 있고, 하나 이상의 호환성 제안 및 하나 이상의 최적화 제안은 복수의 상이한 애플리케이션 스토어의 특정 애플리케이션 스토어에 특유하다.
예 11은 웹 애플리케이션과 연관된 실행시간 정보를 식별하는 단계를 더 포함하고, 실행시간 정보는 하나 이상의 최적화 제안 중 적어도 하나를 생성하는데 사용되는, 예 10의 방법을 포함할 수 있다.
예 12는 웹 애플리케이션 내에 계측 라이브러리를 통합하는 단계를 더 포함하고, 계측 라이브러리는 실행시간 정보를 식별하는, 예 11의 방법을 포함할 수 있다.
예 13은 하나 이상의 최적화 제안 중 적어도 하나는 성능 고려사항 또는 전력 고려사항 중 하나 이상을 처리하는, 예 10의 방법을 포함할 수 있다.
예 14는 하나 이상의 최적화 제안 중 적어도 하나는 캐스케이딩 스타일 시트(CSS) 파일 편성, JavaScript 파일 편성, 애플리케이션 프로그래밍 인터페이스(API) 선택, 정지 화상 포맷, 타임아웃 설정, 비디오 코덱 선택 또는 비디오 포맷 중 하나 이상을 식별하는, 예 10의 방법을 포함할 수 있다.
예 15는 CSS 파일 편성은 스타일 효과, 특정 효과, 전이 설정, 스와이프 설정 또는 페이드 설정 중 하나 이상을 포함하는, 예 14의 방법을 포함할 수 있다.
예 16은 구성 선택의 세트를 식별하는 단계, 및 구성 선택의 세트, 특정 애플리케이션 스토어의 하나 이상의 운영 체제 요구 및 특정 애플리케이션 스토어의 하나 이상의 타겟 플랫폼 요구에 기초하여 웹 애플리케이션을 생성하는 단계를 더 포함하는, 예 10 내지 15 중 어느 하나의 방법을 포함할 수 있다.
예 17은 특정 애플리케이션 스토어에 웹 애플리케이션을 포팅하는 단계를 더 포함하는, 예 16의 방법을 포함할 수 있다.
예 18은 컴퓨팅 디바이스에 의해 실행되면, 컴퓨팅 디바이스가 복수의 상이한 애플리케이션 스토어와 연관된 구성 옵션의 세트를 식별하게 하고, 개발 환경에서 웹 애플리케이션을 위한 하나 이상의 호환성 제안을 생성하기 위해 구성 옵션의 세트를 사용하게 하는 명령어 세트를 포함하는 적어도 하나의 컴퓨터 판독가능 저장 매체를 포함할 수 있다. 명령어는 실행되면, 또한 개발 환경에서 웹 애플리케이션을 위한 하나 이상의 최적화 제안을 생성하기 위해 구성 옵션의 세트를 사용하게 할 수 있고, 하나 이상의 호환성 제안 및 하나 이상의 최적화 제안은 복수의 상이한 애플리케이션 스토어의 특정 애플리케이션 스토어에 특유하다.
예 19는 웹 애플리케이션과 연관된 실행시간 정보를 식별하기 위한 계측 라이브러리를 더 포함하고, 실행시간 정보는 하나 이상의 최적화 제안 중 적어도 하나를 생성하는데 사용되는, 예 18의 적어도 하나의 컴퓨터 판독가능 저장 매체를 포함할 수 있다.
예 20은 명령어는 실행되면, 컴퓨팅 디바이스가 웹 애플리케이션 내에 계측 라이브러리를 통합하게 하는, 예 19의 적어도 하나의 컴퓨터 판독가능 저장 매체를 포함할 수 있다.
예 21은 하나 이상의 최적화 제안 중 적어도 하나는 성능 고려사항 또는 전력 고려사항 중 하나 이상을 처리하는, 예 18의 적어도 하나의 컴퓨터 판독가능 저장 매체를 포함할 수 있다.
예 22는 하나 이상의 최적화 제안 중 적어도 하나는 캐스케이딩 스타일 시트(CSS) 파일 편성, JavaScript 파일 편성, 애플리케이션 프로그래밍 인터페이스(API) 선택, 정지 화상 포맷, 타임아웃 설정, 비디오 코덱 선택 또는 비디오 포맷 중 하나 이상을 식별하는, 예 18의 적어도 하나의 컴퓨터 판독가능 저장 매체를 포함할 수 있다.
예 23은 CSS 파일 편성은 스타일 효과, 특정 효과, 전이 설정, 스와이프 설정 또는 페이드 설정 중 하나 이상을 포함하는, 예 22의 적어도 하나의 컴퓨터 판독가능 저장 매체를 포함할 수 있다.
예 24는 명령어는 실행되면, 컴퓨팅 디바이스가 구성 선택의 세트를 식별하게 하고, 구성 선택의 세트, 특정 애플리케이션 스토어의 하나 이상의 운영 체제 요구 및 특정 애플리케이션 스토어의 하나 이상의 타겟 플랫폼 요구에 기초하여 웹 애플리케이션을 생성하게 하는, 예 18 내지 23 중 어느 하나의 적어도 하나의 컴퓨터 판독가능 저장 매체를 포함할 수 있다.
예 25는 명령어는 실행되면, 컴퓨팅 디바이스가 특정 애플리케이션 스토어에 웹 애플리케이션을 포팅하게 하는, 예 24의 적어도 하나의 컴퓨터 판독가능 저장 매체를 포함할 수 있다.
예 26은 예 10 내지 17 중 어느 하나의 방법을 수행하기 위한 수단을 포함하는, 웹 애플리케이션을 개발하는 장치를 포함할 수 있다.
본 명세서에 설명된 기술은 따라서, 플랫폼을 거쳐 그리고 애플리케이션을 거쳐 웹 애플리케이션을 개발하기 위한 단일의 융통성 있는 환경을 개발자에게 제공할 수 있다. 구성 옵션 및 제안은 기술이 진화하고 상이한 개발이 발생할 필요가 있음에 따라 시간 경과에 따라 확장될 수 있다. 기술은 웹 애플리케이션이 상이한 애플리케이션 스토어 내에 수락되게 하기 위해 다수의 상이한 코드 베이스를 기록하기 위한 프로그래머를 위한 임의의 요구를 제거할 수 있다. 그 결과, 개발 시간은 최적화 제안을 통해 전력 및/또는 성능을 향상시키면서 상당히 감소될 수 있다.
다양한 실시예는 하드웨어 요소, 소프트웨어 요소, 또는 이들의 조합을 사용하여 구현될 수 있다. 하드웨어 요소의 예는 프로세서, 마이크로프로세서, 회로, 회로 소자(예를 들어, 트랜지스터, 레지스터, 캐패시터, 인덕터 등), 집적 회로, 응용 주문형 집적 회로(ASIC), 프로그램가능 로직 디바이스(programmable logic devices: PLD), 필드 프로그램가능 게이트 어레이(FPGA), 로직 게이트, 레지스터, 반도체 디바이스, 칩, 마이크로칩, 칩셋 등을 포함할 수 있다. 소프트웨어의 예는 소프트웨어 구성요소, 프로그램, 애플리케이션, 컴퓨터 프로그램, 애플리케이션 프로그램, 시스템 프로그램, 머신 프로그램, 운영 체제 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈, 루틴, 서브루틴, 함수, 방법, 절차, 소프트웨어 인터페이스, 애플리케이션 프로그램 인터페이스(API), 명령어 세트, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트, 컴퓨터 코드 세그먼트, 워드, 값, 심벌, 또는 이들의 임의의 조합을 포함할 수 있다. 실시예가 하드웨어 요소 및/또는 소프트웨어를 사용하여 구현되는지 여부를 판정하는 것은 원하는 연산 레이트, 전력 레벨, 열 공차, 프로세싱 사이클 버젯, 입력 데이터 레이트, 출력 데이터 레이트, 메모리 리소스, 데이터 버스 속도 및 다른 디자인 또는 성능 제약과 같은 임의의 수의 팩터에 따라 다양할 수 있다.
적어도 하나의 실시예의 하나 이상의 양태는 머신에 의해 판독될 때, 머신이 본 명세서에 설명된 기술을 수행하도록 로직을 제조하게 하는, 프로세서 내의 다양한 로직을 표현하는 머신 판독가능 매체 상에 저장된 대표적인 명령어에 의해 구현될 수 있다. "IP 코어"로서 공지된 이러한 표현은 탠저블 머신 판독가능 매체 상에 저장되고, 실제로 로직 또는 프로세서를 제조하는 제조 머신 내로 로딩을 위해 다양한 고객 또는 제조 설비에 공급될 수 있다.
실시예는 모든 유형의 반도체 집적 회로("IC") 칩과 함께 사용을 위해 적용가능하다. 이들 IC 칩의 예는 프로세서, 콘트롤러, 칩셋 구성요소, 프로그램가능 로직 어레이(PLA), 메모리 칩, 네트워크 칩 등을 포함하지만, 이들에 한정되는 것은 아니다. 게다가, 도면의 몇몇에서, 신호 컨덕터 라인이 라인들로 표현되어 있다. 몇몇은 더 많은 구성 신호 경로를 지시하기 위해 상이할 수 있고, 다수의 구성 신호 경로를 지시하기 위해 넘버 라벨을 가질 수 있고, 그리고/또는 주 정보 흐름 방향을 지시하기 위해 하나 이상의 종단에 화살표를 가질 수 있다. 그러나, 이는 제한 방식으로 해석되지 않아야 한다. 오히려, 이러한 추가의 상세는 회로의 더 용이한 이해를 용이하게 하기 위해 하나 이상의 예시적인 실시예와 관련하여 사용될 수 있다. 임의의 표현된 신호 라인은, 부가의 정보를 갖건 갖지 않건간에, 다수의 방향으로 이동할 수 있는 하나 이상의 신호를 실제로 포함할 수 있고, 예를 들어 상이한 쌍으로 구현되는 디지털 또는 아날로그 라인, 광파이버 라인 및/또는 싱글 엔드 라인(single-ended lines)과 같은 임의의 적합한 유형의 신호 방안으로 구현될 수 있다.
예시적인 크기/모델/값/범위가 제공될 수 있지만, 실시예는 이들에 한정되는 것은 아니다. 제조 기술(예를 들어, 포토리소그래피)이 시간 경과에 따라 성장함에 따라, 더 소형 크기의 디바이스가 제조될 수 있는 것이 예측된다. 게다가, IC 칩 및 다른 구성요소로의 공지된 전력/접지 접속은 예시 및 설명의 간단화를 위해, 그리고 실시예의 특정 양태를 불명료하게 하지 않기 위해 도면 내에 도시되어 있거나 도시되어 있지 않을 수도 있다. 또한, 구성은 실시예를 불명료하게 하는 것을 회피하기 위해 블록 다이어그램 형태로 또한 이러한 블록 다이어그램의 구현과 관련하여 상세에서 구성이 실시예가 구현될 플랫폼에 매우 의존하는 사실의 견지에서 도시될 수 있는데, 즉 이러한 상세는 당 기술 분야의 숙련자의 고찰 내에 양호하게 있어야 한다. 특정 상세(예를 들어, 회로)가 예시적인 실시예를 설명하기 위해 설명되는 경우에, 실시예는 이들 특정 상세 없이, 또는 변형을 갖고 실시될 수 있다는 것이 당 기술 분야의 숙련자에게 명백할 것이다. 설명은 따라서 한정 대신에 예시적인 것으로서 간주되어야 한다.
몇몇 실시예는 예를 들어, 머신에 의해 실행되면, 머신이 실시예에 따른 방법 및/또는 동작을 수행하게 할 수 있는 명령어 또는 명령어의 세트를 저장할 수 있는 머신 또는 탠저블 컴퓨터 판독가능 매체 또는 물품을 사용하여 구현될 수 있다. 이러한 머신은 예를 들어, 임의의 적합한 프로세싱 플랫폼, 컴퓨팅 플랫폼, 컴퓨팅 디바이스, 프로세싱 디바이스, 컴퓨팅 시스템, 프로세싱 시스템, 컴퓨터, 프로세서 등을 포함할 수 있고, 하드웨어 및/또는 소프트웨어의 임의의 적합한 조합을 사용하여 구현될 수 있다.
달리 구체적으로 언급되지 않으면, "프로세싱", "컴퓨팅", "계산", "판정" 등과 같은 용어는 컴퓨팅 시스템의 레지스터 및/또는 메모리 내의 물리량(예를 들어, 전자)으로서 표현된 데이터를 컴퓨팅 시스템의 메모리, 레지스터 또는 다른 이러한 정보 저장 장치, 전송 또는 디스플레이 디바이스 내의 물리량으로서 유사하게 표현되는 다른 데이터로 조작하고 그리고/또는 변환하는 컴퓨터 또는 컴퓨팅 시스템, 또는 유사한 전자 컴퓨팅 디바이스의 동작 및/또는 프로세서를 나타낸다는 것이 이해될 수 있다. 실시예들은 이와 관련하여 한정되는 것은 아니다.
용어 "결합된"은 당해의 구성요소들 사이의 직접적인 또는 간접적인 임의의 유형의 관계를 나타내는데 사용될 수 있고, 전기, 기계, 유체, 광학, 전자기, 전자기계 또는 다른 접속에 적용될 수 있다. 게다가, 용어 "제 1", "제 2" 등은 단지 본 명세서에서 설명을 용이하게 하기 위해 사용될 수 있고, 달리 지시되지 않으면, 어떠한 특정 시간적 또는 연대적 중요도도 전달하지 않는다.
본 출원 및 청구범위에 사용될 때, 용어 "~ 중 하나 이상"에 의해 연결된 아이템들의 리스트는 열거된 용어의 임의의 조합을 의미할 수 있다. 예를 들어, 구문 "A, B 또는 C 중 하나 이상"은 A; B; C; A 및 B; A 및 C; B 및 C; 또는 A, B 및 C를 의미할 수 있다.
당 기술 분야의 숙련자들은 실시예의 광범위한 기술이 다양한 형태로 구현될 수 있다는 것을 상기 설명으로부터 이해할 수 있을 것이다. 따라서, 실시예가 그 특정 예와 관련하여 설명되었지만, 다른 변형예가 도면, 명세서 및 이하의 청구범위의 연구시에 당 기술 분야의 숙련자에게 명백할 것이기 때문에, 실시예의 진정한 사상은 이와 같이 한정되어서는 안 된다.

Claims (25)

  1. 웹 애플리케이션을 개발하는 장치로서,
    복수의 상이한 애플리케이션 스토어(application store)와 연관된 구성 옵션의 세트를 식별하는 옵션 모듈과,
    상기 구성 옵션의 세트를 사용해서, 개발 환경에서 웹 애플리케이션을 위한 하나 이상의 호환성 제안을 생성하는 호환성 모듈과,
    상기 구성 옵션의 세트를 사용해서, 상기 개발 환경에서 상기 웹 애플리케이션을 위한 하나 이상의 최적화 제안을 생성하는 최적화 모듈
    을 포함하고,
    상기 하나 이상의 호환성 제안 및 상기 하나 이상의 최적화 제안은 자동으로 구현되고, 상기 복수의 상이한 애플리케이션 스토어의 특정 애플리케이션 스토어에 특유(specific)한 것이며,
    상기 하나 이상의 최적화 제안은 하나 이상의 타임아웃 설정을 식별하고,
    상기 하나 이상의 타임아웃 설정은 CSS(cascading style sheets) 요소가 수행되는 변화율을 식별하며,
    하나 이상의 상기 CSS 요소가 상기 애플리케이션의 성능과 관계없다면, 상기 하나 이상의 최적화 제안은 상기 CSS 요소의 사용을 제거하고,
    상기 옵션 모듈, 상기 호환성 모듈 및 상기 최적화 모듈은, 적어도 부분적으로 구성가능한 로직 및 고정-기능 로직 하드웨어 중 하나 이상으로 구현되는
    장치.
  2. 제 1 항에 있어서,
    상기 웹 애플리케이션과 연관된 실행시간 정보(runtime information)를 식별하는 계측 라이브러리(instrumentation library)를 더 포함하고,
    상기 실행시간 정보는 상기 하나 이상의 최적화 제안 중 적어도 하나를 생성하는데 사용되는
    장치.
  3. 제 2 항에 있어서,
    상기 옵션 모듈은 상기 웹 애플리케이션 내에 상기 계측 라이브러리를 통합시키는
    장치.
  4. 제 1 항에 있어서,
    상기 하나 이상의 최적화 제안 중 적어도 하나는 전력 소비 특성을 포함한 전력 고려사항을 처리하는
    장치.
  5. 제 1 항에 있어서,
    상기 하나 이상의 최적화 제안 중 적어도 하나는 애플리케이션 프로그래밍 인터페이스(application programming interface: API) 선택, 정지 화상 포맷, 비디오 코덱 선택 또는 비디오 포맷 중 하나 이상을 식별하는
    장치.
  6. 삭제
  7. 제 1 항에 있어서,
    구성 선택의 세트를 식별하는 선택 모듈과,
    상기 구성 선택의 세트, 상기 특정 애플리케이션 스토어의 하나 이상의 운영 체제 요구 및 상기 특정 애플리케이션 스토어의 하나 이상의 타겟 플랫폼 요구에 기초하여 상기 웹 애플리케이션을 생성하는 애플리케이션 모듈을 더 포함하는
    장치.
  8. 제 7 항에 있어서,
    상기 특정 애플리케이션 스토어에 상기 웹 애플리케이션을 포팅(port)하는 출력 모듈을 더 포함하는
    장치.
  9. 제 1 항에 있어서,
    상기 옵션 모듈은 호환성 라이브러리 및 최적화 라이브러리를 포함하는
    장치.
  10. 컴퓨팅 디바이스에 의해 실행되는, 웹 애플리케이션을 개발하는 방법에 있어서,
    복수의 상이한 애플리케이션 스토어와 연관된 구성 옵션의 세트를 식별하는 단계와,
    상기 구성 옵션의 세트를 사용해서, 개발 환경에서 웹 애플리케이션을 위한 하나 이상의 호환성 제안을 생성하는 단계와,
    상기 구성 옵션의 세트를 사용해서, 상기 개발 환경에서 상기 웹 애플리케이션을 위한 하나 이상의 최적화 제안을 생성하는 단계
    를 포함하고,
    상기 하나 이상의 호환성 제안 및 상기 하나 이상의 최적화 제안은 자동으로 구현되고, 상기 복수의 상이한 애플리케이션 스토어의 특정 애플리케이션 스토어에 특유한 것이며,
    상기 하나 이상의 최적화 제안은 하나 이상의 타임아웃 설정을 식별하고,
    상기 하나 이상의 타임아웃 설정은 CSS 요소가 수행되는 변화율을 식별하며,
    하나 이상의 상기 CSS 요소가 상기 애플리케이션의 성능과 관계없다면, 상기 하나 이상의 최적화 제안은 상기 CSS 요소의 사용을 제거하는
    방법.
  11. 제 10 항에 있어서,
    상기 웹 애플리케이션과 연관된 실행시간 정보를 식별하는 단계
    를 더 포함하고,
    상기 실행시간 정보는 상기 하나 이상의 최적화 제안 중 적어도 하나를 생성하는데 사용되는
    방법.
  12. 제 11 항에 있어서,
    상기 웹 애플리케이션 내에 계측 라이브러리를 통합하는 단계
    를 더 포함하고,
    상기 계측 라이브러리는 상기 실행시간 정보를 식별하는
    방법.
  13. 제 10 항에 있어서,
    상기 하나 이상의 최적화 제안 중 적어도 하나는 전력 소비 특성을 포함한 전력 고려사항을 처리하는
    방법.
  14. 제 10 항에 있어서,
    상기 하나 이상의 최적화 제안 중 적어도 하나는 애플리케이션 프로그래밍 인터페이스(API) 선택, 정지 화상 포맷, 비디오 코덱 선택 또는 비디오 포맷 중 하나 이상을 식별하는
    방법.
  15. 삭제
  16. 제 10 항에 있어서,
    구성 선택의 세트를 식별하는 단계와,
    상기 구성 선택의 세트, 상기 특정 애플리케이션 스토어의 하나 이상의 운영 체제 요구 및 상기 특정 애플리케이션 스토어의 하나 이상의 타겟 플랫폼 요구에 기초하여, 상기 웹 애플리케이션을 생성하는 단계를 더 포함하는
    방법.
  17. 제 16 항에 있어서,
    상기 특정 애플리케이션 스토어에 상기 웹 애플리케이션을 포팅하는 단계를 더 포함하는
    방법.
  18. 명령어 세트를 포함하는 적어도 하나의 비일시적 컴퓨터 판독가능 저장 매체로서,
    상기 명령어 세트는, 컴퓨팅 디바이스에 의해 실행되는 경우, 상기 컴퓨팅 디바이스로 하여금
    복수의 상이한 애플리케이션 스토어와 연관된 구성 옵션의 세트를 식별하게 하고,
    상기 구성 옵션의 세트를 사용해서, 개발 환경에서 웹 애플리케이션을 위한 하나 이상의 호환성 제안을 생성하게 하며,
    상기 구성 옵션의 세트를 사용해서, 상기 개발 환경에서 상기 웹 애플리케이션을 위한 하나 이상의 최적화 제안을 생성하게 하되,
    상기 하나 이상의 호환성 제안 및 상기 하나 이상의 최적화 제안은 자동으로 구현되고, 상기 복수의 상이한 애플리케이션 스토어의 특정 애플리케이션 스토어에 특유한 것이며,
    상기 하나 이상의 최적화 제안은 하나 이상의 타임아웃 설정을 식별하고,
    상기 하나 이상의 타임아웃 설정은 CSS 요소가 수행되는 변화율을 식별하며,
    하나 이상의 상기 CSS 요소가 상기 애플리케이션의 성능과 관계없다면, 상기 하나 이상의 최적화 제안은 상기 CSS 요소의 사용을 제거하는
    비일시적 컴퓨터 판독가능 저장 매체.
  19. 제 18 항에 있어서,
    상기 웹 애플리케이션과 연관된 실행시간 정보를 식별하기 위한 계측 라이브러리를 더 포함하고,
    상기 실행시간 정보는 상기 하나 이상의 최적화 제안 중 적어도 하나를 생성하는데 사용되는
    비일시적 컴퓨터 판독가능 저장 매체.
  20. 제 19 항에 있어서,
    상기 명령어 세트는 실행되는 경우 컴퓨팅 디바이스로 하여금 상기 웹 애플리케이션 내에 상기 계측 라이브러리를 통합하게 하는
    비일시적 컴퓨터 판독가능 저장 매체.
  21. 제 18 항에 있어서,
    상기 하나 이상의 최적화 제안 중 적어도 하나는 전력 소비 특성을 포함한 전력 고려사항을 처리하는
    비일시적 컴퓨터 판독가능 저장 매체.
  22. 제 18 항에 있어서,
    상기 하나 이상의 최적화 제안 중 적어도 하나는 애플리케이션 프로그래밍 인터페이스(API) 선택, 정지 화상 포맷, 비디오 코덱 선택 또는 비디오 포맷 중 하나 이상을 식별하는
    비일시적 컴퓨터 판독가능 저장 매체.
  23. 삭제
  24. 제 18 항에 있어서,
    상기 명령어 세트는 실행되는 경우 컴퓨팅 디바이스로 하여금
    구성 선택의 세트를 식별하게 하고,
    상기 구성 선택의 세트, 상기 특정 애플리케이션 스토어의 하나 이상의 운영 체제 요구 및 상기 특정 애플리케이션 스토어의 하나 이상의 타겟 플랫폼 요구에 기초하여 상기 웹 애플리케이션을 생성하게 하는
    비일시적 컴퓨터 판독가능 저장 매체.
  25. 제 24 항에 있어서,
    상기 명령어 세트는 실행되는 경우 컴퓨팅 디바이스로 하여금 상기 특정 애플리케이션 스토어에 상기 웹 애플리케이션을 포팅하게 하는
    비일시적 컴퓨터 판독가능 저장 매체.
KR1020157033734A 2013-06-28 2013-06-28 독립적인 애플리케이션 스토어를 통한 웹 애플리케이션의 호환성 및 최적화 KR101793113B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/048441 WO2014209337A1 (en) 2013-06-28 2013-06-28 Compatibility and optimization of web applications across independent application stores

Publications (2)

Publication Number Publication Date
KR20160004354A KR20160004354A (ko) 2016-01-12
KR101793113B1 true KR101793113B1 (ko) 2017-11-20

Family

ID=52142470

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157033734A KR101793113B1 (ko) 2013-06-28 2013-06-28 독립적인 애플리케이션 스토어를 통한 웹 애플리케이션의 호환성 및 최적화

Country Status (5)

Country Link
US (1) US20160124743A1 (ko)
EP (1) EP3014425A4 (ko)
KR (1) KR101793113B1 (ko)
CN (1) CN105247480B (ko)
WO (1) WO2014209337A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111552571B (zh) * 2020-04-30 2024-05-24 深信服科技股份有限公司 应用反馈方法、计算机设备及计算机存储介质
WO2024076123A1 (ko) * 2022-10-05 2024-04-11 삼성전자 주식회사 어플리케이션 업데이트 방법 및 그 전자 장치

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130074046A1 (en) * 2011-09-20 2013-03-21 Alcatel-Lucent Usa, Inc. Application protoyping suite

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10216602A1 (de) * 2002-04-15 2003-10-30 Giesecke & Devrient Gmbh Optimierung von compilergeneriertem Programmcode
CN100339831C (zh) * 2005-12-14 2007-09-26 浙江大学 应用于Java操作系统中虚拟机的编译体系实现方法
CN101256482A (zh) * 2007-12-19 2008-09-03 深圳市同洲电子股份有限公司 一种嵌入式应用程序的开发系统及方法
US8234564B2 (en) * 2008-03-04 2012-07-31 Apple Inc. Transforms and animations of web-based content
JP5226425B2 (ja) * 2008-08-13 2013-07-03 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報処理装置、情報処理方法およびプログラム
US8176417B2 (en) * 2008-10-22 2012-05-08 Platformic, Inc. Constructing and maintaining web sites
US8667483B2 (en) * 2009-03-25 2014-03-04 Microsoft Corporation Device dependent on-demand compiling and deployment of mobile applications
US20100281475A1 (en) * 2009-05-04 2010-11-04 Mobile On Services, Inc. System and method for mobile smartphone application development and delivery
US20110022870A1 (en) * 2009-07-21 2011-01-27 Microsoft Corporation Component power monitoring and workload optimization
US8464229B2 (en) * 2009-12-29 2013-06-11 Microgen Aptitude Limited Creation of form-based software application in a graphical user interface (GUI) environment
US8438219B2 (en) * 2010-08-19 2013-05-07 At&T Intellectual Property I, Lp Systems, computer program products, and methods for generating custom web pages for mobile devices
US9330196B2 (en) * 2010-11-01 2016-05-03 Seven Networks, Llc Wireless traffic management system cache optimization using http headers
US8601439B2 (en) * 2010-12-09 2013-12-03 Microsoft Corporation Networked program dependency compatibility analysis
US8621439B2 (en) * 2011-09-06 2013-12-31 Microsoft Corporation Modern application tracing
US8938719B2 (en) * 2011-11-30 2015-01-20 Tata Consultancy Services Limited System and method for performance assurance of applications
US8997038B2 (en) * 2012-03-30 2015-03-31 Anypresence, Inc. Systems and methods for building and deploying mobile applications
US9685160B2 (en) * 2012-04-16 2017-06-20 Htc Corporation Method for offering suggestion during conversation, electronic device using the same, and non-transitory storage medium
US9134980B1 (en) * 2012-05-01 2015-09-15 Amazon Technologies, Inc. Compiler optimization in a computing environment
US20140089786A1 (en) * 2012-06-01 2014-03-27 Atiq Hashmi Automated Processor For Web Content To Mobile-Optimized Content Transformation

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130074046A1 (en) * 2011-09-20 2013-03-21 Alcatel-Lucent Usa, Inc. Application protoyping suite

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Adam Connors and Bryan Sullivan, Mobile Web Application Best Practices, W3C Recommendation, W3C, 2010.12.14.*

Also Published As

Publication number Publication date
CN105247480B (zh) 2020-03-06
KR20160004354A (ko) 2016-01-12
EP3014425A4 (en) 2016-12-21
US20160124743A1 (en) 2016-05-05
EP3014425A1 (en) 2016-05-04
CN105247480A (zh) 2016-01-13
WO2014209337A1 (en) 2014-12-31

Similar Documents

Publication Publication Date Title
US10048948B2 (en) Optimized retrieval of custom string resources
US11048837B2 (en) Generation of dynamic design flows for integrated circuits
US20140053063A1 (en) User interface control framework for stamping out controls using a declarative template
US20130227522A1 (en) Integrated Application Localization
JP2017168152A (ja) サーチ結果としてのイメージの提示
KR20150038350A (ko) 웹 애플리케이션을 위한 보안 데이터 컨테이너
Kukunas Power and performance: Software analysis and optimization
US10902548B2 (en) Frame invalidation control with causality attribution
CN105359104B (zh) 状态信息的同步点
CN104346224A (zh) 使用组页面错误描述符来处理上下文切换和进程终止
Firtman High Performance Mobile Web: Best Practices for Optimizing Mobile Web Apps
KR101793113B1 (ko) 독립적인 애플리케이션 스토어를 통한 웹 애플리케이션의 호환성 및 최적화
US9185513B1 (en) Method and system for compilation with profiling feedback from client
KR20160070631A (ko) 프로세서 및 프로세서의 명령어 처리 방법
Cohen et al. Android Application Development for the Intel Platform
Corre et al. Fast template-based heterogeneous mpsoc synthesis on fpga
US9389865B1 (en) Accelerated execution of target of execute instruction
CN114586002A (zh) 改变数据格式的交织数据转换
US11907724B2 (en) In-memory trace with overlapping processing and logout
JP2013080386A (ja) 情報処理装置、アドレス管理方法
Xu An Input/Output Virtualization Platform for Mobile and Wearable Applications
Servati Beiragh Hardware Accelerated Text Display
CN114330230A (zh) 显示逻辑系统设计的文档的方法及相关设备
AU2014271227A1 (en) MPSoC performance estimation for cache variations
Rasmussen High-performance Windows Store Apps

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant