MX2012012015A - Estructura de aplicacion de plataforma cruzada. - Google Patents

Estructura de aplicacion de plataforma cruzada.

Info

Publication number
MX2012012015A
MX2012012015A MX2012012015A MX2012012015A MX2012012015A MX 2012012015 A MX2012012015 A MX 2012012015A MX 2012012015 A MX2012012015 A MX 2012012015A MX 2012012015 A MX2012012015 A MX 2012012015A MX 2012012015 A MX2012012015 A MX 2012012015A
Authority
MX
Mexico
Prior art keywords
application
platform
group
source code
layer
Prior art date
Application number
MX2012012015A
Other languages
English (en)
Inventor
Nathan J Clevenger
Original Assignee
Itr Group Inc
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 Itr Group Inc filed Critical Itr Group Inc
Publication of MX2012012015A publication Critical patent/MX2012012015A/es

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations
    • G06Q10/06313Resource planning in a project environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Strategic Management (AREA)
  • Economics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Educational Administration (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • Game Theory and Decision Science (AREA)
  • General Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Development Economics (AREA)
  • Biodiversity & Conservation Biology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

Se genera un grupo de instrucciones en parte al compilar un código fuente de aplicación específica. Cuando nativamente se ejecuta en una plataforma provista por un dispositivo, el grupo de instrucciones proporciona una aplicación. Se genera otro grupo de instrucciones en parte al compilar el mismo código fuente lógico de negocios. Cuando se ejecuta nativamente en otra plataforma provista por otro dispositivo, el otro grupo de instrucciones proporciona la misma aplicación. El código fuente lógico de negocios está substancialmente libre de código específico para cualquier plataforma. Además, el código fuente lógico de negocios define substancialmente toda la funcionalidad de la aplicación de aplicación específica.

Description

ESTRUCTURA DE APLICACION DE PLATAFORMA CRUZADA SOLICITUD RELACIONADA Esta solicitud se presentó el 15 de abril, 2011, como una Solicitud de Patente Internacional de PCT en el nombre de ITR Group, Inc. una corporación nacional de E.U.A., solicitante para la designación de todos los países excepto E.U.A., y Nathan J. Clevenger, un ciudadano de E.U.A., solicitante para la designación de E.U.A. únicamente, y reclama prioridad a la Solicitud de Patente de E.U.A. Serie No. 61/324,672 presentada el 15 de abril, 2010.
ANTECEDENTES Los dispositivos de cómputo móviles cada vez más sofisticados se están volviendo dominantes en la sociedad actual. Tales dispositivos de cómputo móviles ya no solo tienen la capacidad de hacer llamadas telefónicas o intercambiar mensajes de texto, si no que ahora son capaces de ejecutar aplicaciones de software completas. Las aplicaciones de software para los dispositivos de cómputo móviles pueden servir para una gran variedad de propósitos. Por ejemplo, algunas aplicaciones de software para dispositivos de cómputo móviles son simples videojuegos. En otro ejemplo, algunas aplicaciones de software para dispositivos de cómputo móviles soportan procedimientos de ventas o inventario para empresas.
Diferentes tipos de dispositivos de cómputo móviles tienen diferentes sistemas operativos y capacidades. Por ejemplo, algunos teléfonos móviles utilizan el sistema operativo ANDROID® y otros teléfonos móviles utilizan el sistema operativo IPHONE®. En otro ejemplo, algunos dispositivos de cómputo móviles soportan interfases de usuario gráficas ricas, de color completo, mientras otros dispositivos de cómputo móviles únicamente proporcionan simples interfases basadas en texto.
Debido a que diferentes tipos de dispositivos de cómputo móviles tienen diferentes sistemas operativos y capacidades, si un desarrollador desea desarrollar una aplicación de software para diferentes tipos de dispositivos de cómputo móviles, ha sido necesario desarrollar versiones separadas de la aplicación de software para cada uno de los diferentes tipos de dispositivos de cómputo móviles. Por ejemplo, un desarrollador puede tener que desarrollar una versión de una aplicación de software para teléfonos móviles IPHONE® y otra versión de la aplicación de software para teléfonos móviles BLACKBERRY®. El desarrollo de diferentes versiones de una aplicación de software para diferentes tipos de dispositivos de cómputo móviles puede ser un procedimiento costoso y consumidor de tiempo.
BREVE DESCRIPCION DE LA INVENCION Se genera un grupo de instrucciones legibles por computadora en parte al compilar código fuente lógico de negocios. Cuando se ejecuta nativamente en una plataforma provista por un dispositivo, el grupo de instrucciones legibles por computadora proporciona una aplicación. Otro grupo de instrucciones legibles por computadora se genera en parte al compilar el mismo código fuente lógico de negocios. Cuando se ejecuta nativamente en otra plataforma proporcionada por otro dispositivo, el otro grupo de instrucciones legibles por computadora proporciona la misma aplicación. El código fuente lógico de negocios no contiene código específico para cualquier plataforma. Además, el código fuente lógico de negocios define toda la funcionalidad de aplicación especifica de la aplicación.
BREVE DESCRIPCION DE LOS DIBUJOS La Figura 1 esfun diagrama de bloques que ilustra un sistema ilustrativo para desarrollar y distribuir una aplicación.
La Figura 2 es un diagrama de bloques que ilustra una modalidad alterna ilustrativa de un sistema para distribuir una aplicación.
La Figura 3 es un diagrama de bloques que ilustra otra modalidad alterna ilustrativa de un sistema para distribuir una aplicación .
La Figura 4 es un diagrama de bloques que ilustra un sistema ilustrativo para generar instrucciones legibles por computadora de una aplicación.
La Figura 5 es un cuadro de flujo que ilustra un procedimiento de desarrollo de aplicación ilustrativo.
La Figura 6 es un diagrama de bloques que ilustra un sistema de software ilustrativo.
La Figura 7 es un diagrama de bloques que ilustra un sistema ilustrativo para desarrollar y distribuir una aplicación utilizando una técnica de desarrollo basada en cliente.
La Figura 8 es un diagrama de bloques que ilustra un sistema ilustrativo para ejecutar una aplicación que utiliza la técnica de desarrollo basada en cliente.
La Figura 9 es un diagrama de bloques que ilustra un sistema ilustrativo para desarrollar y distribuir una aplicación utilizando una técnica de desarrollo basada en servidor.
La Figura 10 es un diagrama de bloques que ilustra un sistema ilustrativo para ejecutar una aplicación que utiliza la técnica de desarrollo basada en servidor.
La Figura 11 es un diagrama de bloques que ilustra un sistema ilustrativo para desarrollar y distribuir una aplicación que utiliza una técnica de desarrollo de cubierta de cliente.
La Figura 12 es un diagrama de bloques que ilustra un sistema ilustrativo para ejecutar una aplicación que utiliza la técnica de desarrollo de cubierta de cliente.
La Figura 13 es un diagrama de bloques que ilustra un sistema ilustrativo para desarrollar y distribuir aplicaciones híbridas.
La Figura 14 es un diagrama de bloques que ilustra un sistema ilustrativo para ejecutar aplicaciones híbridas.
La Figura 15 es un cuadro de flujo que ilustra una operación ilustrativa de un módulo de contenedor.
La Figura 16 es un cuadro de flujo que ilustra una operación de navegación ilustrativa de un módulo de aplicación.
La Figura 17 es un diagrama de bloques que ilustra un dispositivo de cómputo ilustrativo.
DESCRIPCION DETALLADA La Figura 1 es un diagrama de bloques que ilustra un sistema ilustrativo 100 para desarrollar y distribuir una aplicación. En el ejemplo de la Figura 1, un desarrollar 102 desarrolla una aplicación. Una aplicación es un programa para proporcionar funcionalidad específica a usuarios. El desarrollador 102 puede desarrollar aplicaciones que proporcionan varias funcionalidades. Por ejemplo, el desarrollador 102 puede desarrollar una aplicación para presentar listas libros mejor vendidos. En otra aplicación, el desarrollador 102 puede desarrollar una aplicación que ayuda a un u suario a ordenar partes de máquina.
El sistema 100 incluye un grupo de dispositivos de cómputo 104A-104N (colectivamente, "dispositivos de cómputo 104"). En las figuras, las elipses entre elementos indican que uno o más elementos similares se omiten de las Figuras para claridad. Los números de referencia que incluyen letras A-N no pretenden indicar un número mínimo o máximo de elementos.
Un dispositivo de cómputo es un dispositivo que procesa datos. Tipos ilustrativos de dispositivos de cómputo incluyen dispositivos móviles tales como teléfonos, teléfonos inteligentes, teléfonos de rasgos, computadoras de tableta, computadoras netbook, computadoras notebook, dispositivos de juegos portátiles, reproductores de medios personales, y computadoras en vehículo. Los dispositivos móviles generalmente son dispositivos de cómputo que están diseñados para transportarse en la mano. Diferentes dispositivos móviles proporcionan diferentes tipos de plataformas. Tipos ilustrativos de dispositivos de cómputo también incluyen computadoras de escritorio, aparatos electrodomésticos o comerciales, cajas de tv por cable, dispositivos de grabadora de video digital, televisiones, consolas de juego, máquinas de juegos, computadoras de punto de ventas, dispositivos de manejo de inventario electrónico, dispositivos de cómputo industriales, computadoras de servidor, y otros tipos de dispositivos que procesan datos. En el ejemplo de la Figura 1, el grupo de dispositivos de cómputo 104 incluye un teléfono inteligente, un teléfono de aspectos, una computadora de escritorio, y una computadora laptop. Otras modalidades pueden incluir otros tipos de dispositivos de cómputo.
Diferentes de los dispositivos de cómputo 104 proporcionan diferentes plataformas. Una plataforma es una estructura en el cual pueden correr aplicaciones. Tipos ilustrativos de plataformas incluyen el sistema operativo WINDOWS PHONE 7® de Microsoft Corp., el sistema operativo IOS® de Apple Inc., el sistema operativo ANDROID® de Google Inc., el sistema operativo WINDOWS 7® de Microsoft Corp., la estructura Telnet, y otros tipos de estructuras en las cuales pueden correr las aplicaciones.
El desarrollador 102 utiliza un sistema de cómputo de desarrollador 106 para desarrollar la aplicación para que las versiones de la aplicación sean capaces de correr en las plataformas provistas por los dispositivos de cómputo 104. El término sistema de cómputo abarca sistemas que comprenden uno o más dispositivos de cómputo. El sistema de cómputo del desarrollador 106 proporciona un ambiente de desarrollo 108 para ayudar al desarrollador 102 a desarrollar la aplicación. Para ayudar al desarrollo 102 a desarrollar la aplicación, el ambiente de desarrollo 108 proporciona herramientas que ayudan al desarrollador 102 a preparar el código fuente para la aplicación. Por ejemplo, el ambiente de desarrollo 108 puede proporcionar herramientas de edición de texto y herramientas de prueba que ayudan al desarrollador 102 a preparar el código fuente para la aplicación.
Además, el ambiente de desarrollo 108 genera múltiples paquetes 112A a 112N (colectivamente, "pa uetes 112"). Los paquetes 112 pueden corresponder a la misma aplicación, cada paquete recopilado se va a ejecutar o de otra forma asociar con una plataforma diferente. Los paquetes 112 contienen diferentes grupos de instrucciones legibles por computadora. Las instrucciones en paquetes diferentes a los paquetes 112 pueden ejecutarse nativamente en las plataformas asociadas con los paquetes 112. Por ejemplo, el paquete 112A puede contener instrucciones que una primera plataforma puede ejecutar nativamente y el paquete 112N puede contener instrucciones que una segunda plataforma puede ejecutar nativamente. La ejecución de las instrucciones en los paquetes 112 hace que la aplicación se proporcione a un usuario. En algunas modalidades, el grupo de paquetes 112 también puede incluir diferentes aplicaciones para ejecución o asociación con la misma plataforma u otras plataformas.
El ambiente de desarrollo 108 genera los paquetes 112 al compilar grupos de código fuente. Cada grupo de código fuente incluye el código fuente lógico de negocios 110 y un grupo diferente de código fuente de plataforma específica 111. En otras palabras, el desarrollador 102 utiliza el código fuente lógico de negocios 110 y los grupos del código fuente de plataforma específica 111 para generar los paquetes 112. El ambiente de desarrollo 108 genera diferentes grupos de instrucciones ejecutables por computadora para diferentes plataformas al compilar el código fuente lógico de negocios 110 con diferentes de los grupos de código fuente de plataforma específica 111.
El código fuente lógico de negocios 110 define substancialmente toda la funcionalidad de la aplicación que es específica para la aplicación. Por ejemplo, el código fuente lógico de negocios 110 puede definir funcionalidad que genera o recupera datos que se van a presentar por la aplicación. En algunas modalidades, el código fuente lógico de negocios 110 define toda la funcionalidad que es específica para la aplicación. En otras modalidades, pequeñas cantidades de código fuera del código fuente lógico de negocios 110 definen, influencian, o afectan la funcionalidad que se especifica para la aplicación. Por ejemplo, en tales modalidades, menos de cien líneas de código fuera del código fuente lógico de negocios 110 definen funcionalidad que es específica para la aplicación.
El código fuente lógico de negocios 110 está substancialmente libre de código que es específico para cualquier plataforma. En algunas modalidades, el código fuente lógico de negocios 110 puede incluir ningún código o código de funcionamiento que es especifico para cualquier plataforma. Por ejemplo, en algunas modalidades, el código fuente lógico de negocios 110 no incluye código que es específico para u na API de la plataforma ANDROID®, la plataforma WINDOWS PHONE 7®, o cualquier otra plataforma. En otro ejemplo, el código fuente lógico de negocios 110 no incluye código que se ejecute condicionalmente dependiente de qué plataforma está corriendo la aplicación. Incluso en otro ejemplo, el código fuente lógico de negocios 110 puede no incluir código que causa que la aplicación presente diferente contenido o tenga diferente estructura de navegación dependiendo de la plataforma en la cual corre la aplicación. En otras modalidades, el código fuente lógico de negocios 1 10 puede i ncluir una pequeña cantidad de código que es específico para una plataforma. Por ejemplo, en algunas modalidades, el código fuente lógico de negocios 110 incluye menos de veinte líneas de código que son específicas para una plataforma particular.
Los grupos de código fuente de plataforma específico 111 contienen código que ayuda a la aplicación a operar en plataformas específicas. Los grupos de código de plataforma específica 111 están asociados con diferentes plataformas. Los grupos de código de plataforma específica 111 están substancialmente libres de código que define funcionalidad específica para aplicaciones. En algunas modalidades, los grupos de código de plataforma específica 111 no incluyen ningún código que defina funcionalidad específica para aplicaciones particulares. Por ejemplo, en algunas modalidades, los grupos de código de plataforma específica 111 pueden no incluir código que define contenido en interfases de usuario de aplicaciones específicas, código que define cómo el usuario navega a través de aplicaciones, o bloques de código ejecutados únicamente para aplicaciones específicamente identificadas. En algunas modalidades, los grupos de código de plataforma específica 111 incluyen pequeñas cantidades de código que definen, influencian, o afectan la funcionalidad específica para una aplicación particular. Por ejemplo, en algunas modalidades, cada uno de los grupos de código de plataforma específica 111 incluye menos de veinte líneas de código que definen funcionalidad específica para una aplicación particular.
Debido a que los grupos de código de plataforma específica 111 están substancialmente libres de código que definen funcionalidad específica para aplicaciones, el desarrollador 102 y/u otros desabolladores pueden reutilizar los grupos de código de plataforma especifica 111 en muchas aplicaciones sin hacer nada, o al menos substancialmente, de los cambios a los grupos de código de plataforma específica 111. Por ejemplo, el desarrollador 102 puede desarrollar código fuente lógico de negocios para una aplicación adicional. En este ejemplo, el desarrollador 102 entonces puede utilizar el código fuente lógico de negocios para la aplicación adicional junto con grupos utilizados previamente utilizados de código fuente de plataforma específica para generar grupos de instrucciones ejecutables por computadora adecuadas para ejecución en diferentes plataformas.
En algunas modalidades, el desarrollador 102 puede necesitar modificar menos de veinte líneas de código para adaptar el código de plataforma específica 111'para usarse con la aplicación. Además, en algunas modalidades, el desarrollador 102 únicamente puede necesitar comentar código, remover el comentario en código, o modificar valores de parámetros con el fin de adaptar el código de plataforma específica 111 para usarse con la aplicación.
En varias modalidades, el desarrollador 102 puede obtener los grupos de código de plataforma específica 111 de varias formas. Por ejemplo, el desarrollador 102 puede obtener los grupos de código de plataforma específica 111 de una o más partes externas. En este ejemplo, una o más partes externas pueden incluir vendedores, minoristas, consultores, otros desabolladores, u otras entidades separadas del desarrollador 102 ó una organización a la cual pertenece el desarrollador 102. Además, en este ejemplo, el desarrollador 102 puede obtener los grupos de código de plataforma especifica 111 de una o más partes externas en intercambio de artículos o servicios de valor, tal como pagos monetarios. Además, en este ejemplo, el sistema de cómputo de desarrollador 106 puede descargar o de otra forma copiar los grupos de código de plataforma específica 111 de un sistema de almacenamiento de datos proporcionado por una o más partes externas. En otro ejemplo, el desarrollador 102 puede escribir los grupos de código de plataforma específica 111. En algunas modalidades, los grupos de código de plataforma específica 111 pueden estar disponibles en una base de software como un servicio (SaaS).
En algunas modalidades, los paquetes 112 incluyen instrucciones ejecutables por computadora recopiladas de los grupos de código de plataforma específica 1 11. Por ejemplo, si el paquete 112A está asociado con una plataforma dada, el paquete 112A puede incluir instrucciones ejecutables por computadora recopiladas de uno de los grupos de código de plataforma específica 111 que está asociado con la plataforma dada.
Después que el ambiente de desarrollo 108 genera los paquetes 112, los paquetes 112 se almacenan en un sistema de almacenamiento de datos 114. Varias modalidades ¡mplementan el sistema de almacenamiento de datos 114 en varias formas. Por ejemplo, algunas modalidades ¡mplementan el sistema de almacenamiento de datos 114 como un sistema de archivo. En otro ejemplo, el sistema de almacenamiento de datos 114 puede implementarse como una base de datos relacional.
Los dispositivos de cómputo 104 obtienen los paquetes 112 del sistema de almacenamiento de datos 114. En varias modalidades, los dispositivos de cómputo 104 obtienen los paquetes 112 desde el sistema de almacenamiento de datos 114 en varias formas. Por ejemplo, los dispositivos de cómputo 104 pueden obtener aquellos apropiados de los paquetes 112 al enviar solicitudes a un servidor (no mostrado) que recupera los paquetes 112 del sistema de almacenamiento de datos 114 y envía los paquetes 112 a los dispositivos de cómputo 104. En otro ejemplo, un dispositivo de cómputo puede realizar un procedimiento de distribución que empuja los paquetes 112 fuera del sistema de almacenamiento de datos 114 a uno o más de los dispositivos de cómputo 104.
Las aplicaciones desarrolladas que utilizan el sistema de cómputo de desarrollador 106 ó como se describe aquí de otra forma pueden distribuirse utilizando varios sistemas diferentes. Por ejemplo, la Figura 2 ilustra un diagrama de bloques de una modalidad alterna ilustrativa de un sistema para distribuir aplicaciones entre muchos sistemas posibles para distribuir aplicaciones. En el ejemplo de la Figura 2, un sistema de distribución de aplicación 200 incluye el sistema de almacenamiento de datos 114 y los dispositivos de cómputo 104 como se describió anteriormente con respecto al ejemplo de la Figura 1. Para obtener los paquetes 112, los dispositivos de cómputo 104 se comunican a través de una red 202 con una tienda de aplicaciones 204. La red 202 puede comprender varios tipos de redes. Por ejemplo, la red 202 puede comprender Internet, una red de área local, una red de área de campo, u otro tipo de red.
La tienda de aplicaciones 204 es un mercado electrónico para aplicaciones de software. Por ejemplo, la tienda de aplicaciones 204 puede ser APP STORE® de Apple Inc., Android Market de Google Inc., Windows Phone Market Place de Microsoft Corp., APP WORLD® de Research in Motion LTD., Amazon.com, u otro mercado electrónico para aplicaciones de software. En a Igunas modalidades, un propietario u operador de la tienda de aplicaciones 204 puede tener u operar el sistema de almacenamiento de datos 114. En otras modalidades, la tienda de aplicaciones 204 y el sistema de almacenamiento de datos 114 se tiene y/u opera por diferentes entidades.
Los usuarios de los dispositivos de cómputo 104 pueden utilizar los dispositivos de cómputo 104 para comprar la aplicación a través de la tienda de aplicaciones 204. Cuando un usuario de uno de los dispositivos de cómputo 104 compra la aplicación, la tienda de aplicaciones 204 recupera uno de los paquetes 112 y transmite el paquete al dispositivo de cómputo. En algunos casos, los usuarios de los dispositivos de cómputo 104 pueden comprar algunos de los paquetes 112 asociados con diferentes plataformas de diferentes almacenamientos de aplicaciones.
La Figura 3 es un diagrama de bloques que ilustra otra modalidad alterna ilustrativa para distribuir un sistema de la aplicación. En el ejemplo de la Figura 3, un sistema de distribución de aplicación 300 incluye el sistema de almacenamiento de datos 114. El sistema de almacenamiento de datos 114 almacena los paquetes 112. Para obtener los paquetes 112, los dispositivos de cómputo 104 se comunican a través de la red 202 con un sistema de distribución 302.
El sistema de distribución 302 realiza un procedimiento que automáticamente distribuye los paquetes 112 a los dispositivos de cómputo 104. En otras palabras, el sistema de distribución 302 empuja los paquetes 112 fuera de los dispositivos de cómputo 104. Por ejemplo, los dispositivos de cómputo 104 pueden estar asociados con una organización, el paquete 112A puede estar asociado con una primera plataforma, y el paquete 112N puede estar asociado con una segunda plataforma diferente. En este ejemplo, el sistema de distribución 302 puede comunicarse con los dispositivos de cómputo 104 para determinar cuales de los dispositivos de cómputo 104 proporciona la primera plataforma y cuales de los dispositivos de cómputo 104 proporcionan la segunda plataforma. En este ejemplo, la distribución 302 empuja el paquete 112A fuera de los dispositivos de cómputo 104 que proporcionan la primera plataforma y empuja el paquete 112N fuera de los dispositivos de cómputo 104 que proporcionan la segunda plataforma. Realizar tal procedimiento de distribución automatizado puede ser útil en un ambiente de organización con el fin de asegurar que se instale el software correcto en los dispositivos de cómputo de la empresa.
La Figura 4 es un diagrama de bloques que ilustra un sistema ilustrativo 400 para generar instrucciones legibles por computadora de una aplicación. Como se ilustra en el ejemplo de la Figura 4, una aplicación de recopilador 402 genera los paquetes 112. En diferentes modalidades, los paquetes 112 pueden o no estar en un formato de archivo. En algunas modalidades, la aplicación de recopilador 102 es parte del ambiente de desarrollo 108. En otras modalidades, la aplicación de recopilador 402 está separada del ambiente de desarrollo 108.
La aplicación de recopilador 402 genera los paquetes 112 al compilar el código fuente lógico de negocios 110 y uno o más de los grupos del código fuente de plataforma específica 111. Como se mencionó anteriormente, el código fuente lógico de negocios 110 define la funcionalidad de la aplicación que es específica para la aplicación. El código fuente lógico de negocios 110 no incluye código que es específico para cualquier plataforma. Los grupos de código fuente de plataforma específica 111 contienen código que ayuda a la aplicación a operar en plataformas especificas. Los grupos de código fuente de plataforma específica 111 son específicos para plataformas particulares.
Como se utiliza en el ejemplo de la Figura 4, el código fuente lógico de negocios 110 comprende código fuente de aplicación 404 y código fuente de capa 406. El código fuente de aplicación 404 y el código fuente de capa 406 definen funcionalidad de aplicación específica y están substancialmente libres del código específico para cualquier plataforma dada. El código fuente de aplicación 404 define una operación de inicio de aplicación y una operación de navegación. El código fuente de capa 406 define una o más clases de capa.
Los grupos de código fuente de plataforma específica 111 incluyen grupos de código fuente de contenedor 408A-408N (colectivamente, "grupos de código fuente de contenedor 408") y grupos de código fuente de unión 410A-410N (colectivamente, grupos de código fuente de unión 410"). Los grupos de código fuente de contenedor 408 definen operaciones de inicio de plataforma específica que inician la aplicación. Los grupos de código fuente de unión 410 definen las operaciones de salida de capa que generan datos de salida que pueden utilizarse por diferentes plataformas para presentar capas utilizando características de interfase de usuario que son nativas para diferentes plataformas. Cada uno de los grupos de código fuente de contenedor 408 contiene código específico para una plataforma diferente. Cada uno de los grupos de código fuente de unión 410 contiene código específico para una plataforma diferente. Los grupos de código fuente de unión 410 están substancialmente libres de código que define una funcionalidad específica para cualquier aplicación particular.
En varías modalidades, el código fuente de capa 406, el código fuente de aplicación 404, los grupos de código fuente de contenedor 408, y los grupos de código fuente de unión 410 se escriben en varios lenguajes de programación de nivel alto. Por ejemplo, en algunas modalidades, el código fuente de capa 406, el código fuente de aplicación 404, los grupos de código fuente de contenedor 408, y/o los grupos de código fuente de unión 410 se escriben en el lenguaje de programación C#, el lenguaje de programación de Objetivo C, el lenguaje de programación C, el lenguaje de programación C + + , el lenguaje de programación Java, u otro tipo de lenguaje de programación de alto nivel. Debido a que el código fuente d e capa 406, el código fuente de aplicación 404, los grupos de código fuente de contenedor 408, y los grupos de código fuente de unión 410 están escritos en un lenguaje de programación de alto nivel, los errores de sintaxis en el código fuente pueden detectarse en el tiempo de recopilación en lugar del tiempo de ejecución. Debido a que los errores de sintaxis se detectan en el tiempo de recopilación en lugar de en el tiempo de ejecución, los dispositivos de cómputo que corren los paquetes 112 pueden ser más confiables debido a que tales dispositivos de cómputo son m enos probables a colapsarse o colgar debido a tales errores de sintaxis. Además, debido a que los paquetes 112 comprenden código de lenguaje de programación de alto nivel recopilado, la aplicación puede ejecutarse más eficientemente que si los paquetes contuvieran código de lenguaje de programación interpretado. De esa forma, al ejecutar el código recopilado en lugar de código interpretado, los dispositivos de cómputo que corren los paquetes 112 pueden operar más rápido y más confiablemente.
En algunos casos, múltiples plataformas diferentes pueden asociarse con el mismo grupo de código fuente de contenedor 408 y/o el mismo grupo de código fuente de unión 410. Por ejemplo, IPHONES® y IPADS® ambos pueden asociarse con el mismo grupo de código fuente de contenedor 408 y/o el mismo grupo de código fuente de unión 410. En algunos casos, una plataforma individual puede asociarse con múltiples grupos de código fuente de contenedor 408 ó múltiples grupos de código fuente de unión 410. Cada uno de los grupos de código fuente de contenedor 408 y/o grupos de código fuente de unión 410 puede almacenarse en un archivo diferente.
La Figura 5 es un cuadro de flujo que ilustra un procedimiento de desarrollo de aplicación ilustrativo 500. El desarrollador 102 realiza el procedimiento de desarrollo de aplicación 500 para desarrollar una aplicación que puede operar en múltiples plataformas. En otras palabras, el desarrollador 102 utiliza el procedimiento de desarrollo de aplicación 500 para desarrollar una aplicación de plataforma cruzada- Para construir una aplicación, el desarrollador 102 identifica las capas que se van a incluir en la aplicación (502). Una capa comprende un grupo de contenido presentado como una unidad por una aplicación a un usuario de la aplicación. Las capas pueden contener una gran variedad de contenido. Por ejemplo, una capa de la aplicación puede contener una sinopsis de un libro, un listado de programas de televisión, marcadores deportivos, un video clip, un menú principal de una aplicación, y otros grupos de contenido presentados como una unidad por la aplicación para el usuario de la aplicación.
Debido a que el contenido en una capa se presenta como una unidad, no es necesario realizar una operación de navegación para ver contenido adicional en la capa. Una operación de navegación es una operación para cambiar la capa actualmente presentada por una aplicación a un usuario. Por ejemplo, en algunas plataformas, un usuario puede necesitar desplazarse hacia arriba o hacia abajo para ver contenido adicional en una capa, pero no necesitaría navegar lejos de la capa para ver el contenido adicional.
Diferentes plataformas pueden presentar la misma capa en diferentes formas. Por ejemplo, una plataforma de Telnet puede presentar una lista de títulos de libro en una capa como una serie de secuencias de texto plano que representan los títulos del libro. En este ejemplo, la plataforma de Respuesta de Voz Interactiva (IVR) puede presentar la misma lista de títulos de libro al enviar sonidos hablados de los títulos del libro. Además, en este ejemplo, una plataforma de IPHONE® puede presentar la misma lista de títulos del libro como una lista de secuencias de texto ricamente formateadas que representan los títulos del libro.
Cada una de las capas en la aplicación está asociada con un Identificador de Recurso Uniforme (URI) de capa diferente. Por ejemplo, una primera capa en la aplicación contiene un área de texto que contiene una sinopsis de un libro y una segunda capa en la aplicación contiene un área de texto que contiene una sinopsis de otro libro. En este ejemplo, la primera capa puede asociarse con el URI de capa "http://www.example.com/application1/layer1 ?booklD = 32" y la segunda capa puede asociarse con la URI de capa "http://www.example.com/application1/layer1 ?booklD = 525".
Una capa comprende uno o más elementos de contenido. Un elemento de contenido comprende un grupo de contenido estructurado para presentarse por una aplicación para un usuario. Varios elementos de contenido estructuran grupos de contenido en diferentes formas. Tipos ilustrativos de elemento de contenido incluyen listas, artículos de datos de lista, menús, artículos de menú, imágenes, bloques de texto, áreas de entrada de texto, mapas geográficos, paneles, y así sucesivamente. Diferentes plataformas pueden presentar los mismos elementos de contenido en diferentes formas. Por ejemplo, una plataforma de IPHONE® puede representar un menú como una lista de elementos gráficos seleccionables asociados con cada artículo de menú en el menú. En este ejemplo, un sistema de Telnet puede presentar el mismo menú como una lista de secuencias de texto asociadas con cada artículo de menú en el menú. Cada secuencia de texto en la lista está asociada con un número. En este ejemplo, el sistema de Telnet también presenta un impulso que pide al usuario ingresar el número del artículo de menú deseado.
Los elementos de contenido de una capa pueden incluir elementos de navegación. Un elemento de navegación es un elemento de contenido que, cuando se selecciona por un usuario, hace que la aplicación navegue a otra capa de la aplicación. Cada elemento de navegación especifica el URI de capa de la capa a la cual la aplicación navega cuando un usuario selecciona el elemento de navegación. Como otros tipos de elementos de contenido, diferentes plataformas pueden presentar elementos de navegación de diferentes formas. Por ejemplo, en algunas modalidades, una plataforma de navegador web presenta un elemento de navegación como un hipervínculo. En este ejemplo, una plataforma de IPHONE® puede presentar el mismo elemento de navegación como un control gráfico.
En algunas modalidades posibles, las capas de la aplicación incluyen una capa de inicio. La capa de inicio de la aplicación es la capa de la aplicación que, por omisión, un usuario de la aplicación utiliza para empezar a trabajar con la aplicación. En varias aplicaciones, la capa de inicio contiene varios tipos de contenido. Por ejemplo, en algunas aplicaciones, la capa de inicio actúa como un menú principal de la aplicación y comprende elementos de navegación que permiten al usuario navegar a varias otras capas de la aplicación. En otras aplicaciones, la capa de inicio, es una pantalla de presentación para la aplicación.
Después que el desarrollador 102 identifica las capas que se van a incluir en la aplicación, el desarrollador 102 desarrolla el código fuente de capa 406 (504). Alternativamente, el desarrollador 102 selecciona el código fuente de capa 406 de una biblioteca del código fuente de capa ya existente. Es decir, el código fuente de capa 406 puede reutilizarse en múltiples aplicaciones.
El código fuente de capa 406 define una o más clases de capa. En general, cada una de las clases de capa es una herramienta descriptiva que define un grupo de atributos y/o servicios que caracterizan miembros (objetos) de la clase. Cada una de las clases de capa corresponde a una diferente de la de las capas identificadas. Un módulo de capa es un objeto de software que es un ejemplo de una clase de capa. Un módulo de capa representa una capa.
Cada una de las clases de capa definida p or el código fuente de capa 406 contiene una operación de carga. La operación de capa carga datos en el módulo de capa. La operación de carga puede realizar una gran variedad de actividades para cargar contenido en el módulo de capa apropiado. Por ejemplo, la operación de carga puede llenar un menú con artículos de menú. En otro ejemplo, la operación de carga puede recuperar datos de una red o una base de datos y llenar los datos dentro en un bloque de texto.
No hay necesidad de desarrollar o seleccionar un diferente código fuente de capa 406 para versiones de la aplicación que operan en diferentes plataformas. En otras palabras, el código fuente de capa 406 no es específico para ninguna plataforma. Consecuentemente, las operaciones de carga definidas por el código fuente de capa 406 cargan el mismo contenido en los módulos de capa sin importar la plataforma en la cual está operando la aplicación.
Para desarrollar la aplicación, el desarrollador 102 también desarrolla el código fuente de aplicación 404 (506). El código fuente de aplicación 404 define una operación de inicio de aplicación y una operación de navegación, Cuando se ejecuta, en la operación de inicio de la aplicación inicia un mapa de navegación. El mapa de navegación traza URI de capa para módulos de capa. En algunas modalidades, el código fuente de aplicación 404 automáticamente genera los URI de capa. En otras modalidades, el código fuente de aplicación 404 utiliza URI de capa pre-definidos URI. Cuando la aplicación recibe una solicitud de navegación, la operación de navegación utiliza el mapa de navegación para identificar un módulo de capa apropiado de una pluralidad de módulos de capa. El módulo de capa apropiado está asociado con un URI de capa especificado por la solicitud de navegación. La operación de carga del módulo de capa apropiado entonces se invoca para cargar contenido en el módulo de capa apropiado. Una solicitud de navegación es una solicitud para navegar la aplicación de una capa de la aplicación a otra capa de la aplicación.
No hay necesidad de que el desarrollador 102 desarrolle un código fuente de aplicación 404 diferente para versiones de la aplicación que operan en diferentes plataformas. Más bien, el mismo código fuente de aplicación 404 se utiliza en versiones de la aplicación que operan en diferentes plataformas. En otras palabras, el código fuente de aplicación 404 no es específico para cualquier plataforma. Consecuentemente, la operación de navegación especificada por el código fuente de aplicación 404 utiliza las mismas operaciones de carga del código fuente de capa, sin importar la plataforma en el cual está operando la aplicación.
El código fuente de lógica de negocios 110 de la aplicación comprende el código fuente de aplicación 404 y el código fuente de capa 406 de aplicación. El código fuente lógico de negocios 110 no contiene código que sea específico para cualquier plataforma. Además, el código fuente lógico de negocios 110 define toda la funcionalidad de la aplicación que es específica para la aplicación. En otras palabras, la funcionalidad de la aplicación, como se percibe por un usuario de la aplicación, se define en el código fuente lógico de negocios 110 en una forma que no es específica para cualquier plataforma.
Además, para desarrollar la aplicación, el desarrollador 102 selecciona una o más plataformas en las cuales va a operar la aplicación (508). Por ejemplo, el desarrollador 102 puede seleccionar una plataforma asociada con el IPHONE® y IPAD®. En otro ejemplo, el desarrollador 102 puede seleccionar una plataforma asociada con clientes de Telnet. Diferentes plataformas proporcionan diferentes ¡nterfases de programación de aplicación (API) que presentan información a un usuario y reciben entrada de un usuario.
Después de seleccionar las plataformas en las cuales va a operar la aplicación, el desarrollador 102 selecciona los grupos de código fuente de unión 410 asociados con las plataformas seleccionadas (510). En otras modalidades, el desarrollador 102 obtiene una biblioteca de grupos predefinidos del código fuente de unión. En tales modalidades, el desarrollador 102 puede obtener la biblioteca de varias fuentes. En varias modalidades, por ejemplo, el desarrollador 102 puede descargar uniones individuales, descargar grupos de uniones, desarrollar sus propias uniones y sus bibliotecas asociadas, o acceder a las uniones desde una biblioteca proporcionada como SaaS. En uso, el desarrollador 102 puede seleccionar los grupos de código fuente de unión 410 asociados con las plataformas seleccionadas de entre los grupos de código fuente de unión almacenados en la biblioteca. Por ejemplo, el desarrollador 102 puede adquirir una copia de la biblioteca y/o derechos para utilizar la biblioteca desde una parte externa en intercambio de artículos o servicios de valor. Los grupos de código fuente de unión en la biblioteca pueden agregarse a la biblioteca por el desarrollador 102 ó una parte externa antes del desarrollo de la aplicación. Los grupos de código fuente de unión en la biblioteca pueden reutilizarse substancialmente en la misma forma en múltiples aplicaciones. Por ejemplo, en algunas modalidades, los grupos de código fuente de unión en la biblioteca pueden reutilizarse exactamente d é l a misma forma en múltiples aplicaciones. En otras modalidades, los grupos de código fuente de unión en la biblioteca pueden reutilizarse en otras aplicaciones después de cambios menores (por ejemplo, menos de veinte líneas de código) a los grupos de código fuente de unión.
Los grupos de código fuente de unión 410 definen operaciones de salida de capa que generan datos de salida que pueden utilizarse por diferentes plataformas para presentar capas utilizando características de interfase de usuario que son nativas para diferentes plataformas. Por ejemplo, el grupo de código fuente de unión 410A puede definir una operación de salida de capa que procesa módulos de capa para presentar capas utilizando características de interfase de usuario que son nativas para dispositivos de IPHONE®. En este ejemplo, el grupo de código fuente de unión 410B puede definir una operación de salida de capa que procesa los mismos módulos de capa para presentar capas utilizando características de interfase de usuario que son nativas para teléfonos móviles basados en ANDROID®.
Después, el desarrollador 102 desarrolla grupos de código fuente de contenedor 408 (512). Cada uno de los grupos de código fuente de contenedor 408 corresponde a una diferente de las plataformas seleccionadas. Como se describe en detalle en otra parte en e ste documento, cada uno de los grupos de código fuente de contenedor 408 define una operación de inicio que inicia la aplicación.
En algunas modalidades, el desarrollador 102 obtiene los grupos de código fuente de contenedor 408 de una biblioteca de grupos pre-existentes de código fuente de contenedor. Esta biblioteca puede desarrollarse, mantenerse, y/o expandirse por el desarrollador 102, una parte externa, u otra entidad de la misma forma que el desarrollador aceptaría uniones de una biblioteca como se discute aquí. En algunos casos, el desarrollador 102 puede recuperar una copia de la biblioteca y/o derechos para utilizar la biblioteca de una parte exterior en intercambio de artículos o servicios de valor. En tales modalidades, el desarrollador 102 desarrolla los grupos de código fuente de contenedor 408 al modificar grupos pre-existentes de código fuente de contenedor en la biblioteca para que los grupos de código fuente de contenedor 408 identifiquen una clase de aplicación definida por el código fuente de aplicación 404 de la aplicación. De esa forma, los grupos de código fuente de contenedor 408 son específicos para la aplicación y aquellas individuales de las plataformas seleccionadas. Sin embargo, los grupos de código fuente de contenedor 408 no definen ninguna funcionalidad que diferencia la aplicación de otras aplicaciones. Una operación de inicio ilustrativa se describe aquí con respecto a la Figura 15.
Después, el desarrollador 102 selecciona una técnica de desarrollo para la aplicación (514). La técnica de desarrollo para la aplicación rige en donde varios módulos en la aplicación operan. El desarrollo, distribución, y ejecución de aplicaciones utilizando varias técnicas de desarrollo se describe con respecto a las Figuras 7 a 14.
Después de seleccionar la técnica de desarrollo, uno o más sistemas de cómputo generan paquetes 112 correspondientes a las plataformas seleccionadas (516). Cada uno de los paquetes 112 comprende un grupo de instrucciones legibles por computadora recopiladas de un código fuente de aplicación 404 para la aplicación, el código fuente de capa 406 para la aplicación, el código fuente de contenedor 508 para una plataforma especifica, y el grupo de código fuente de unión 510 para la plataforma específica. Las instrucciones en cada uno de los paquetes 112, cuando se ejecutan nativamente por dispositivos que proporcionan aquellas apropiadas de las plataformas seleccionadas, proporcionan la misma aplicación.
Las instrucciones se ejecutan nativamente en una plataforma cuando ningún software que intervenga entre las instrucciones y la plataforma es necesario para ejecutar las instrucciones. Por ejemplo, un conector especial o máquinas virtuales no son necesarios para ejecutar las instrucciones en los paquetes en aquellas apropiadas de las plataformas seleccionadas.
Después de que se desarrollan los paquetes 112, el desarrollador 102 distribuye los paquetes 112 para instalación y uso en los dispositivos de cómputo 104 (518). En varias modalidades, los paquetes 112 se distribuyen en varias formas. Por ejemplo, en algunas modalidades, una tienda de aplicaciones en línea, tal como APP STORE® de Apple Inc., se utilizan para distribuir los paquetes 112. En otras modalidades, los paquetes 112 se distribuyen directamente a los dispositivos de cómputo 104.
La Figura 6 es un diagrama de bloques que ilustra módulos ilustrativos en una aplicación 600. Como se ilustra en el ejemplo de la Figura 6, la aplicación 600 comprende un módulo de contenedor 602, un módulo de aplicación 604, módulos de capa 606A a 606N (colectivamente, "módulos de capa 606"), y un módulo de unión 608. El código fuente de aplicación 404 de la aplicación define la funcionalidad del módulo de aplicación 604. Diferentes clases de capa en el código fuente de capa 406 definen las funcionalidades de aquellos diferentes de los módulos de capa 606. Uno de los grupos de código fuente de contenedor 408 define la funcionalidad del módulo de contenedor 602. Uno de los grupos de código fuente de unión 410 define la funcionalidad del módulo de unión 608.
Cuando se inicia la aplicación 600, el módulo de contenedor 602 empieza a ejecutarse. Cuando el módulo de contenedor 602 empieza a ejecutarse, el módulo de contenedor 602 realiza una operación de inicio. La operación de inicio inicia la aplicación. Una operación de inicio ilustrativa se describe con respecto a la Figura 15. Como en parte a la operación de inicio, el módulo de contenedor 602 proporciona una solicitud de navegación inicial al módulo de aplicación 604. La solicitud de navegación inicial especifica una URI de capa que indica una capa de inicio de la aplicación.
En respuesta a recibir una solicitud de navegación, el módulo de navegación 604 realiza una operación de navegación. Una operación de navegación ilustrativa se describe aquí con respecto a la Figura 16. Como parte de la operación de navegación, el módulo de aplicación 604 utiliza un mapa de navegación para identificar un módulo de capa apropiado. El módulo de capa apropiado es uno de los módulos de capa 606 asociados con el URI de capa especificado por la solicitud de navegación. El módulo de solicitud 604 después proporciona una solicitud de carga al módulo de capa apropiado. La solicitud de carga es una solicitud para realizar una operación de carga del módulo de capa apropiado.
Cuando el módulo de capa apropiado recibe la solicitud de carga, el módulo de capa apropiado realiza una operación de carga. La operación de carga carga el contenido en el módulo de capa apropiado. Varias modalidades ímplementan la operación de carga en varias formas. Por ejemplo, en algunas modalidades, cada módulo de capa comprende uno o más de elementos de contenido. La operación de carga, carga datos en el módulo de capa al cargar datos en uno o más de los elementos de contenido del módulo de capa. Por ejemplo, el módulo de capa puede contener un elemento de contenido que representa una lista. En el ejemplo, la operación de carga puede cargar datos en el módulo de capa al recuperar los títulos de libros mejor vendidos de un sitio web y cargar los títulos en la lista. Cada uno de los módulos de capa 606 puede incluir diferentes elementos de contenido y pueden implementar la operación de carga de forma diferente. Consecuentemente, diferente contenido se carga en diferentes módulos de capa 606.
Después que el módulo de capa apropiado realiza la operación de carga, el módulo de capa apropiado proporciona un evento completo de carga al módulo de aplicación 604. El evento completo de carga contiene una referencia al módulo de capa apropiada.
Después de recibir el evento completo de carga del módulo de capa apropiado, el módulo de aplicación 604 genera un evento completo de carga. El evento completo de carga generado por el módulo de aplicación 604 indica que el módulo de capa apropiado ha completado el contenido de carga. En algunas técnicas de desarrollo, el evento completo de carga contiene una referencia de capa. La referencia de capa comprende un indicador al módulo de capa apropiado. En otras técnicas de desarrollo, el evento completo de carga contiene una versión en serie del módulo de capa apropiado.
El módulo de contenedor 602 escucha eventos completos de carga generados por el módulo de aplicación 604. Cuando el módulo de contenedor 602 detecta un evento completo de carga generado por el módulo de aplicación 604, el módulo de contenedor 602 proporciona la referencia de capa o la versión en serie del módulo de capa apropiado al módulo de unión 608.
Cuando el módulo de unión 608 recibe la referencia de capa o la versión en serie del módulo de capa apropiado, el módulo de unión 608 realiza una operación de salida de capa en el módulo de capa apropiado. La operación de salida de capa genera datos de salida que pueden utilizarse por una plataforma para presentar el módulo de capa apropiado como una o más características de interfase de usuario que son nativas para la plataforma. Como se describe a continuación, diferentes módulos de unión pueden generar varios tipos de datos de salida al realizar la operación de salida de capa en el módulo de capa apropiado.
Varias modalidades implementan la operación de salida de capa en varias formas. Por ejemplo, en algunas modalidades, cada uno de los grupos de código fuente de unión 410 define operaciones de salida de contenido. Las operaciones de salida de contenido corresponden a diferentes tipos de elementos de contenido. Por ejemplo, los grupos de código fuente de unión 410 pueden incluir operaciones de salida de contenido para listas, operaciones de salida de contenido para artículos de datos de lista, operaciones de salida de contenido para menús, operaciones de salida de contenido para artículo de menú, operaciones de salida de contenido para imágenes, y así sucesivamente.
Las operaciones de salida de contenido en los grupos de código fuente de unión 410 para diferentes plataformas generan datos de salida que se pueden utilizar por las diferentes plataformas para presentar elementos de contenido. Por ejemplo, el grupo de código fuente d e unión 4 10A puede definir una operación de salida de contenido que genera datos de salida que una plataforma de IPHONE® puede utilizar para presentar listas. En este ejemplo, el grupo de código fuente de unión 410B puede definir una operación de salida de contenido que genera datos de salida que una plataforma ANDROID® puede utilizar para presentar listas.
Cuando se realiza la operación de salida de capa en el módulo de capa apropiado, el módulo de unión 608 utiliza las operaciones de salida para cada uno de los elementos de contenido en el módulo de capa apropiado. Por ejemplo, si los elementos de contenido del módulo de capa apropiado incluyen una lista y una imagen, el módulo de unión 608 realiza la operación de salida para la lista y la operación de salida para la imagen cuando realiza la operación de salida de capa en el módulo de capa apropiado. De esta forma, la operación de salida de capa genera datos d e salida que se pueden utilizar para presentar cada elemento de contenido del módulo de capa apropiado como una o más características de interfase de usuario nativas para una plataforma particular.
Cuando un usuario selecciona un elemento de navegación en una capa en la aplicación, el módulo de aplicación 604 recibe una solicitud de navegación. La solicitud de navegación especifica el URI de capa de otra capa de la aplicación. Cuando el módulo de aplicación 604 recibe la solicitud de navegación, el procedimiento descrito anteriormente recurre con respecto a otra capa.
La Figura 7 es un diagrama de bloques que ilustra un sistema ilustrativo 700 para desarrollar y distribuir aplicaciones utilizando una técnica de desarrollo basada en cliente. Cuando una aplicación se desarrolla utilizando la técnica de desarrollo basada en cliente, el módulo de contenedor 602, el módulo de aplicación 604, los módulos de. capa 606, y el módulo de unión 608 operan en un dispositivo de cómputo de cliente.
Como se ilustra en el ejemplo de la Figura 7, el sistema 700 comprende el sistema de cómputo de desarrollador 106. El sistema de cómputo de desarrollador 106 incluye la aplicación de recopilador 402. En la técnica de desarrollo basada en cliente, la aplicación de recopilador 402 genera los paquetes 112 para que cada uno de los paquetes 112 incluya instrucciones recopiladas que definen el módulo de aplicación 604, los módulos de capa 606, un módulo de contenedor, y un módulo de unión. Los paquetes 112 son adecuados para instalación en los dispositivos de cómputo que proporcionan diferentes plataformas.
Cuando la aplicación se desarrolla utilizando la técnica de desarrollo basada en cliente, los paquetes 112 se distribuyen a los dispositivos de cómputo 104. Para facilidad de explicación, el ejemplo de la Figura 7, únicamente ilustra un teléfono inteligente de estilo de pantalla táctil y un teléfono de aspectos. Sin embargo, en otras modalidades, los dispositivos de cómputo 104 pueden ser una gran variedad de diferentes tipos de dispositivos móviles, tales como dispositivos de manejo de inventario, teléfonos móviles, computadoras de tableta, computadoras netbook, y así sucesivamente. Además, aunque únicamente se muestran dispositivos móviles, se debe apreciar que las mismas capacidades y funcionalidades descritas en este documento con respecto a los dispositivos de cómputo 104 pueden, en algunas modalidades, realizarse por dispositivos móviles, tales como teléfonos inteligentes, o computadoras de tableta, o dispositivos no móviles, tales como computadoras de escritorio, computadoras de servidor, y así sucesivamente.
Después que se distribuyen los paquetes 112 a los dispositivos de computo 104, los dispositivos de cómputo 104 instalan los paquetes 112. Después de instalación, los dispositivos de cómputo 104 ejecutan las instrucciones en los paquetes 112.
La Figura 8 es un diagrama de bloques que ilustra un sistema ilustrativo 800 para ejecutar aplicaciones que utilizan la técnica de desarrollo basada en cliente. Como se ilustra en el ejemplo de la Figura 8, el sistema 800 comprende el dispositivo de cómputo 104A. Aunque el ejemplo de la Figura 8 se describe con respecto al dispositivo de cómputo 104A, se debe apreciar que aquellos otros dispositi os de cómputo 104 emplean sistemas similares para ejecutar aplicaciones que utiliza la técnica de desarrollo basada en cliente.
El dispositivo de cómputo 104A comprende un sistema de entrada 802 y un sistema de salida 804. El sistema de entrada 802 permite que el dispositivo de cómputo 104A reciba entrada de un usuario 806 del dispositivo de cómputo 104A. En varias modalidades, el sistema de entrada 802 puede ser de una variedad de diferentes tipos de sistemas que permiten al dispositivo de cómputo 104A recuperar la entrada del usuario 806. Por ejemplo, el sistema de entrada 802 puede ser una pantalla táctil, un teclado, un teclado numérico, un dispositivo de señalamiento (por ejemplo, un ratón, almohadilla táctil, seguibola, etc.), una disposición de botones, un micrófono, u otro tipo de sistema que permite al dispositivo de cómputo 104A recibir entrada del usuario 806. El sistema de salida 806 permite al dispositivo de cómputo 104A proporcionar salida al usuario 806. En varias modalidades, el sistema de salida 804 puede ser una variedad de diferentes tipos de sistemas que proporcionan salida a usuarios. Por ejemplo, el sistema de salida 804 puede ser una pantalla de gráficos (por ejemplo, un monitor, una pantalla LCD, una pantalla LED, etc.), un sistema de bocina, u otro tipo de sistema que es capaz de proporcionar salida a usuarios. Además, en algunas modalidades, el sistema de entrada 802 y el sistema de salida 804 son físicamente el mismo sistema. Por ejemplo, el sistema de entrada 802 y el sistema de salida 804 pueden ser una sola pantalla individual.
Además, el dispositivo de cómputo 104A proporciona un sistema operativo 808. El sistema operativo 808 es un sistema de software que maneja los recursos de hardware del dispositivo de cómputo 104A y soporta la operación de las aplicaciones de software. En varias modalidades, el sistema operativo 808 puede ser una variedad de diferentes tipos de sistemas operativos. Por ejemplo, el sistema operativo 808 puede ser un sistema operativo de WINDOWS PHONE 7®, un sistema operativo de WINDOWS 7®, un sistema operativo de IPHONE®, un sistema operativo de OS X®, un sistema operativo WEBOS® de Hewlett Packard Company, un sistema operativo de Linux, un sistema operativo de ANDROID®, un sistema operativo de CHRO E® de Google, Inc., u otro tipo de sistema operativo.
Como se ilustra en el ejemplo de la Figura 8, el dispositivo de cómputo 104A comprende el paquete 112A. La ejecución de instrucciones en el paquete 112A por una unidad de procesamiento del dispositivo de cómputü 104A hace que el dispositivo de cómputo 104A proporcione el módulo de contenedor 602, el módulo de aplicación 604, los módulos de capa 606, y el módulo de unión 608.
Para utilizar la aplicación, el usuario 806 utiliza el sistema de entrada 802 para proporcionar un comando de inicio para el sistema operativo 808. En respuesta, el sistema operativo 808 proporciona una solicitud de inicio al módulo de contenedor 602. Después que el módulo de contenedor 602 recibe la solicitud de inicio, el módulo de contenedor 602, el módulo de aplicación 604, los módulos de capa 606 y el módulo de unión 608 se comportan de la forma descrita anteriormente con respecto al ejemplo de la Figura 6.
En el desarrollo basado en cliente, el módulo de unión 608 envía comandos de interfase de usuario cuando el módulo de unión 608 procesa un módulo de capa. Los comandos de interfase de usuario causan que el sistema de salida 804 presente la capa representada por el módulo de capa. Por ejemplo, los comandos de interfase de usuario pueden hacer que el sistema de salida 804 presente la capa o puede causar que el sistema de salida 804 envíe señales de audio que representan la capa.
La Figura 9 es un diagrama de bloques que ilustra un sistema ilustrativo 900 para desarrollar y distribuir aplicaciones que utilizan una técnica de desarrollo basada en servidor. Cuando se despliega una aplicación utilizando la técnica de desarrollo basada en servidor, el módulo de contenedor 602, el módulo de aplicación 604, los módulos de capa 606, y el módulo de unión 608 operan en los sistemas de servidor 902. La técnica de desarrollo basada en servidor puede ser útil en situaciones en donde no es deseable o posible instalar aplicaciones adicionales en los dispositivos de cómputo 104.
Como se ilustra en el ejemplo de la Figura 9, el sistema 900 comprende el sistema de cómputo de desarrollador 106. El sistema 900 también comprende los dispositivos de cómputo 104. Para facilidad de explicación, únicamente se ilustra un teléfono inteligente de estilo de pantalla táctil y un teléfono de aspectos en el ejemplo de la Figura 9. Sin embargo, en otras modalidades, los dispositivos de cómputo 104 pueden reemplazarse por una gran variedad de diferentes tipos de dispositivos de cómputo, tales como computadoras de escritorio, teléfonos móviles, computadoras de tableta, y así sucesivamente.
El sistema 900 también comprende sistemas de servidor 902A a 902N (colectivamente, "sistemas de servidor 902"). Los sistemas de servidor 902 son sistemas de computadora. Los sistemas de servidor 902 pueden proporcionar diferentes plataformas. Por ejemplo, el sistema de servidor 902A puede proporcionar una plataforma de Servidor web basada en páginas de servidor activas (ASP), el sistema de servidor 902B (no mostrado) puede proporcionar una plataforma de servidor de Telnet, y el sistema de servidor 902N puede proporcionar una plataforma de servidor web basada en PHP.
Para generar una aplicación que utiliza la técnica de desarrollo basada en servidor, la aplicación de recopilador 402 genera los paquetes 112. Cada uno de los paquetes está asociado con una plataforma diferente, la aplicación de recopilador 402 genera los paquetes 112 al compilar el código fuente de capa 406 de la aplicación, el código fuente de aplicación 404 de la aplicación, los grupos de código fuente d e c ontenedor 408 para las plataformas, y los grupos de código fuente de unión 410 para las plataformas. Cada uno de los paquetes 112 incluye instrucciones recopiladas que definen los módulos de capa 606, el módulo de aplicación 604, un módulo de contenedor, y un módulo de unión. Cada uno de los paquetes 112 es adecuado para instalación en los sistemas de servidor 902 que proporcionan la plataforma asociada con el paquete.
Cuando una se desarrolla una aplicación utilizando la técnica de desarrollo basada en servidor, los paquetes 112 se distribuyen a los sistemas de servidor 902 y se instalan en los sistemas de servidor 902. Después de la instalación, los sistemas de servidor 902 ejecutan instrucciones en los paquetes 112 para proporcionar el módulo de contenedor 602, el módulo de aplicación 604, los módulos de capa 606, y el módulo de unión 608.
Los dispositivos de cómputo 104 no incluyen hardware o software que es específico para la aplicación. Por ejemplo, el dispositivo de cómputo 104A puede ser un teléfono estándar y la versión IVR de la aplicación se instala en el sistema de servidor 902A. En este ejemplo, un usuario puede interactuar con la aplicación al utilizar el dispositivo de cómputo 104A para llamar al sistema de servidor 902A. En otro ejemplo, un usuario puede interactuar con la aplicación utilizando una aplicación de cliente de propósito general en el dispositivo de cómputo 104N. Las aplicaciones de cliente de propósito general incluyen aplicaciones que no están unidas a una aplicación basada en servidor específica. Por ejemplo, un usuario puede interactuar con una versión web de la aplicación utilizando una aplicación de navegador web en el dispositivo de cómputo 104N. En otro ejemplo, un usuario puede interactuar con una versión de Telnet de la aplicación utilizando un cliente de Telnet en el dispositivo de cómputo 104N.
La Figura 10 es un diagrama de bloques que ilustra un sistema ilustrativo 1000 para ejecutar aplicaciones que utilizan la técnica de desarrollo basada en servidor. Como se ilustra en el ejemplo de la Figura 10, el sistema 1000 comprende el dispositivo de cómputo 104A y el sistema de servidor 902A. Aunque el ejemplo de la Figura 5 se describe con respecto al dispositivo de cómputo 104A y el sistema de servidor 902A, se debe apreciar que otros de los dispositivos de cómputo 104 y los sistemas de servidor 902 pueden emplear sistemas similares para ejecutar aplicaciones que utilizan la técnica de desarrollo basada en servidor.
Similar al dispositivo de cómputo 104A ilustrado en el ejemplo de la Figura 8, el dispositivo de cómputo 104A ilustrado en el ejemplo de la Figura 10 comprende el sistema de entrada 802, el sistema de salida 804, y el sistema operativo 808.
Sin embargo, en lugar de incluir el paquete 112A, el dispositivo de cómputo 104A ilustrado en el ejemplo de la Figura 10 comprende una aplicación de navegador 1002. En diferentes modalidades, la aplicación de navegador 1002 pigeden ser diferentes tipos de aplicaciones de navegador web. Por ejemplo, la aplicación de navegador 1002 puede ser la aplicación de navegador web SAFARI® de Apple, Inc. la aplicación de navegador web INTERNET EXPLORER® de Microsoft Corp., la aplicación de navegador web FIREFOX® de Mozilla Foundation, la aplicación de navegador web CHROME® de Google, Inc., u otra aplicación de navegador web.
Aunque el dispositivo de cómputo 104A proporciona una aplicación de navegador web en el ejemplo de la Figura 10, se debe apreciar que en algunos casos en donde se desarrolla la aplicación utilizando la técnica de desarrollo basada en servidor, el dispositivo de cómputo 104A proporciona otros tipos de aplicaciones de cliente de propósito general en lugar de la aplicación de navegador 1002. Por ejemplo, el dispositivo de cómputo 104A puede proporcionar un cliente de Telnet en lugar de la aplicación de navegador 1002. Además, en algunos casos en donde se desarrolla la aplicación utilizando la técnica de desarrollo basada en servidor, el dispositivo de cómputo 104A no proporciona una aplicación de cliente de propósito general o un sistema operativo.
El sistema de servidor 902A proporciona el módulo de contenedor 602, el módulo de aplicación 604, los módulos de capa 606, y el módulo de unión 608. El módulo de contenedor 602, el módulo de aplicación 604, los módulos de capa 606, y el módulo de unión 608 ilustrados en el ejemplo .de la Figura 10 se ilustran en una forma similar al módulo de contenedor 602, el módulo de aplicación 604, los módulos de capa 606, y el módulo de unión 608 ilustrados en el ejemplo de la Figura 6.
El sistema de servidor 902A también proporciona una aplicación de servidor 1004. Para utilizar la aplicación, el usuario 806 utiliza el sistema de entrada 802 para interactuar con la aplicación de navegador 1002. La aplicación de navegador 1002 envía una solicitud web a la aplicación de servidor 1004. La solicitud web específica un URI de capa de una capa en la aplicación. Cuando la aplicación de servidor 1004 recibe la solicitud web, la aplicación de servidor 1004 proporciona una solicitud de navegación al módulo de aplicación 604. El módulo de aplicación 604 procesa la solicitud de navegación como se describe previamente. Subsecuentemente, el módulo de unión 608 genera datos de recurso. Los datos de recurso representan la capa indicada por URI de capa. Cuando la aplicación de servidor 1004 recibe los datos de fuente, los datos de servidor 1004 envían una respuesta web a la aplicación de navegador 1002 como una respuesta a la solicitud web. La respuesta web contiene los datos de recurso.
Cuando la aplicación de navegador 1002 recibe la respuesta web, la aplicación de navegador 1002 utiliza el sistema de salida 804 para presentar la capa al usuario 806. Subsecuentemente, el usuario 806 puede seleccionar un elemento de navegación de la capa. Cuando el usuario 806 selecciona el elemento de navegación, la aplicación de navegador 1002 envía otra solicitud web a la aplicación de servidor 1004. La otra solicitud web especifica el URI de capa de otra capa en la aplicación, La aplicación de servidor 1004 procesa esta solicitud web en la misma forma que la solicitud web previa.
La Figura 11 es un diagrama de bloques que ¡lustra un sistema ilustrativo 1100 para desarrollar y distribuir aplicaciones que utilizan la técnica de desarrollo de cubierta de cliente. El sistema 1100 comprende el sistema de cómputo de desarrollador 106. Además, el sistema 1100 comprende los sistemas de servidor 902 y los dispositivos de cómputo 104.
Para generar una aplicación que utiliza la técnica de desarrollo de cubierta de cliente, la aplicación de recopilador 402 genera los paquetes 112 y los paquetes de aplicación de cubierta 1102A a 1102N (colectivamente, "paquetes de aplicación de cubierta 1102"). Cada uno de los paquetes 112 está asociado con una plataforma diferente. Cada uno de los paquetes de aplicación de cubierta 1102 está asociado con una plataforma diferente.
La aplicación de recopilador 402 genera los paquetes 112 al compilar el código fuente de capa 406, el código fuente de aplicación 404, los grupos de código fuente de contenedor 408, y los grupos de código fuente de unión 4 10. Cada uno de los paquetes 112 incluye instrucciones recopiladas que definen uno o más módulos de capa 606, el módulo de aplicación 604, un módulo de contenedor, y un módulo de unión. Cada uno de los paquetes 112 es adecuado para instalación en los sistemas de servidor 902 que proporciona la plataforma asociada con el paquete. Cada uno de los paquetes de aplicación de cubierta 112 comprende instrucciones que proporcionan aplicaciones de cubierta cuando se ejecutan en los dispositivos de cómputo que proporciona la plataforma asociada con el paquete de aplicación de cubierta.
Después que la aplicación de recopilador 402 construye los paquetes 112, los paquetes 112 son distribuidos a e instalados en los sistemas de servidor 902. Además, los paquetes de aplicación de cubierta 1102 se instalan en los dispositivos de cómputo 104. Después que los paquetes de aplicación de cubierta 1102 se instalan en los dispositivos de cómputo 104, los dispositivos de cómputo 104 ejecutan instrucciones legibles por computadora en los paquetes de aplicación de cubierta 1102 que hacen que los dispositivos de cómputo 104 proporcionen aplicaciones de cubierta. Las operaciones de cubierta operan nativamente en los dispositivos de cómputo 104.
Desde la perspectiva de usuarios de los dispositivos de cómputo 104, las aplicaciones de cubierta parecen estar realizando todas las operaciones de la aplicación. Sin embargo, en realidad, las aplicaciones de cubierta realmente están enviando solicitudes de navegación a los sistemas de servidor 902, recibiendo datos de interfase en serie de los sistemas de servidor 902, y utilizando los datos de interfase en serie para presentar capas de la aplicación a los usuarios. Varias modalidades formatean los datos de interfase en serie en varias formas. Por ejemplo, los datos de interfase en serie pueden formatearse como datos HTML, datos XML, datos de imagen, u otros datos formateados en otras formas. La técnica de despliegue de cubierta de cliente puede ser útil en situaciones en donde es ventajoso tener el trabajo de la aplicación realizado lejos de los dispositivos de cómputo 104, pero incluso proporcionar la apariencia que la aplicación se está proporcionando por los dispositivos de cómputo 104.
La Figura 12 es un diagrama de bloques que ilustra un sistema ilustrativo 1200 para ejecutar aplicaciones que utilizan la técnica de desarrollo de cubierta de cliente. Como se ilustra en el ejemplo de la Figura 12, el sistema 1200 comprende el dispositivo de cómputo 104A y el sistema de servidor 902A. Aunque el ejemplo de la Figura 12 se describe con respecto al dispositivo de cómputo 104A y el sistema de servidor 902A, se debe apreciar que aquellos de los dispositivos de cómputo 104 y los sistemas de servidor 902 pueden emplear sistemas similares para ejecutar aplicaciones que utilizan la técnica de despliegue de cubierta de cliente.
El dispositivo de cómputo 104A ilustrado en el ejemplo de la Figura 12 es similar al dispositivo de cómputo 104A ilustrado en el ejemplo de la Figura 8. Similar al dispositivo de cómputo 104A ilustrado en el ejemplo de la Figura 8, el dispositivo de cómputo 104A ¡lustrado en el ejemplo de la Figura 12 proporciona el sistema de entrada 802, el sistema de salida 804, y el sistema operativo 808. Sin embargo, el dispositivo de cómputo 104A proporciona una aplicación de cubierta 1202 en lugar d e la aplicación de navegador 1002. La ejecución de las instrucciones en uno de los paquetes de aplicación de cubierta 1102 hace que el dispositivo de cómputo 104A proporcione la aplicación de cubierta 1202.
Además, el sistema de servidor 902A ilustrado en el ejemplo de la Figura 12 es similar al sistema de servidor 902A ilustrado en el ejemplo de la Figura 10. Similar al sistema de servidor 902A ilustrado en el ejemplo de la Figura 10, el sistema de servidor 902A ilustrado en el ejemplo de la Figura 12 proporciona el módulo de contenedor 602, el módulo de aplicación 604, los módulos de capa 606, y el módulo de unión 608.
Para utilizar la aplicación, el usuario 806 utiliza el sistema de entrada 802 para instruir el sistema operativo 808 para iniciar la aplicación de cubierta 1202. Cuando la aplicación de cubierta 1202 inicia, la aplicación de cubierta 1202 proporciona una solicitud de navegación inicial al módulo de aplicación 604. La solicitud de navegación inicial especifica un URI de capa de la capa de inicio de la aplicación. El módulo de aplicación 604 procesa la solicitud de navegación como se describe en otra parte en este documento.
Cuando el módulo de unión 608 procesa un módulo de capa, el módulo de unión 608 proporciona datos de interfase en serie a la solicitud de cubierta 1202. Los datos de interfase en serie representan la capa de la aplicación indicada por el URI de capa. Cuando la aplicación de cubierta 1202 recibe los datos de interfase en serie, la aplicación de cubierta 1202 utiliza el sistema de salida 804 para presentar la capa de la aplicación para al usuario 806. El usuario 806 puede seleccionar elementos de navegación de la capa. Cuando el usuario 806 selecciona un elemento de navegación de la capa, la aplicación de cubierta proporciona otra solicitud de navegación al módulo de contenedor 602. La otra solicitud de navegación especifica el URI de capa asociado con el elemento de navegación.
La Figura 13 es un diagrama de bloques que ilustra un sistema ilustrativo 1300 para desarrollar y distribuir aplicaciones que utilizan una técnica de desarrollo híbrida. Cuando se despliega una aplicación utilizando la técnica de despliegue híbrida, el módulo contenedor 602 y el módulo de unión 608 operan en los dispositivos de cómputo 104 y el módulo de aplicación 604 y los módulos de capa 606 operan en los sistemas de servidor 902. La técnica de desarrollo híbrida puede ser útil en situaciones en donde esto no es deseable que el código de plataforma específica se ejecute en sistemas de servidor. El sistema 1300 comprende el sistema de cómputo de desabollador 106. Además, el sistema 1300 comprende los sistemas de servidor 902 y los dispositivos de cómputo 104.
Para generar una aplicación que utiliza la técnica de despliegue híbrida, la aplicación de recopilador 402 genera un paquete de servidor 1302 para la aplicación. Para generar el paquete de servidor 1302, la aplicación de recopilador 402 compila el código fuente de capa 406 y el código fuente de aplicación 404 para la aplicación. Por lo tanto, el paquete de servidor 1302 incluye instrucciones que definen uno o más módulos de capa 606 y el módulo de aplicación 604. El paquete de servidor 1302 es adecuado para instalación en la plataforma proporcionada por el sistema de servidor 902A. Después que la aplicación de recopilador 402 genera el paquete de servidor 1302, el paquete de servidor 1302 se distribuye a y se instala en el sistema de servidor 902A. Se debe apreciar que en otras modalidades, el paquete de servidor 1302 es distribuido a e instalado en otro de los sistemas de servidor 902.
Además, para generar una aplicación que utiliza la técnica de desarrollo híbrida, la aplicación de recopilador 402 genera paquetes de cliente 1304A a 1304N (colectivamente, "paquetes de cliente 1304") para las plataformas seleccionadas. La aplicación de recopilador 402 genera los paquetes de cliente 1304 al compilar los grupos de código fuente d e contenedor 408 y los grupos de código fuente de unión 410 para las plataformas seleccionadas. Por lo tanto, los paquetes de cliente 1304 incluyen instrucciones que definen el módulo contenedor 602 y el módulo de unión 608. Las instrucciones en cada uno de los paquetes de cliente 1304 son adecuadas para ejecución nativa en diferentes plataformas. Después que la aplicación de recopilador 402 genera los paquetes de cliente 1304, los paquetes de cliente 1304 se distribuyen a e instalan en los dispositivos de cómputo 104.
La Figura 14 es un diagrama de bloques que ilustra un sistema ilustrativo 1400 para ejecutar aplicaciones que utilizan la técnica de despliegue híbrida. Como se lustra en el ejemplo de la Figura 14, el sistema 1400 comprende el dispositivo de cómputo 104A y el sistema de servidor 902A. Aunque el ejemplo de la Figura 14 se describe con respecto al dispositivo de cómputo 104A y el sistema de servidor 902A, se debe apreciar que aquellos de los dispositivos de cómputo 104 y los sistemas de servidor 902 pueden emplear sistemas similares para ejecutar aplicaciones que utilizan la técnica de despliegue híbrida.
El dispositivo de cómputo 104A ilustrado en el ejemplo de la Figura 14 es similar al dispositivo de cómputo 104A ilustrado en el ejemplo de la Figura 8. Similar al dispositivo de cómputo 104A ilustrado en el ejemplo de la Figura 8, el dispositivo de cómputo 104A ¡lustrado en el ejemplo de la Figura 14 proporciona el sistema de entrada 802, el sistema de salida 804, y el sistema operativo 808. Sin embargo, en lugard el paquete 112A, el dispositivo de cómputo 104A comprende el paquete de cliente 1304A. El paquete de cliente 1304A proporciona el módulo de contenedor 602 y el módulo de unión 608 de la aplicación, pero no el módulo de aplicación 604 ó los módulos de capa 606 de la aplicación.
Además, el sistema de servidor 902A ¡lustrado en el ejemplo de la Figura 14 es similar al sistema de servidor 902A ilustrado en el ejemplo de la Figura 9. Sin embargo, el sistema de servidor 902A ilustrado en el ejemplo de la Figura 14 comprende el paquete de servidor 1302. El paquete de servidor 1302 comprende el módulo de aplicación 604 y los módulos de capa 606 de la aplicación, pero no el módulo de contenedor 602 ó el módulo de unión 608 de la aplicación.
Para utilizar la aplicación, el usuario 806 utiliza el sistema de entrada 802 para instruir al sistema operativo 808 para iniciar la aplicación. Cuando la aplicación inicia, el módulo de contenedor 602 proporciona una solicitud de navegación inicial al módulo de aplicación 604 en el sistema de servidor 902A. La solicitud de navegación inicial especifica un URI de capa de la capa de inicio de la aplicación. El módulo de aplicación 604 procesa la solicitud de navegación inicial como se describe en otra parte en este documento.
Subsecuentemente, el módulo de contenedor 602 recibe un evento completo de carga del módulo de aplicación 604. El evento completo de carga comprende una versión en serie de un módulo de capa. El módulo de contenedor 602 proporciona la versión en serie del módulo de capa del módulo de unión 608 en el dispositivo de cómputo 104A. El módulo de unión 608 entonces procesa la versión en serie del módulo de capa. Cuando el módulo de unión 608 procesa la versión en serie del módulo de capa, el módulo de unión 608 envía los comandos de interfase de usuario que hacen que el sistema operativo 808 utilice el sistema de salida 804 para presentar la capa al usuario 806. El usuario 806 puede seleccionar elementos de navegación de la capa. Cuando el usuario 806 selecciona un elemento de navegación de la capa, el sistema operativo 808 proporciona otra solicitud de navegación al módulo de contenedor 602. La otra solicitud de navegación especifica el URI de capa asociado con el elemento de navegación.
La Figura 15 es un cuadro de flujo que ilustra una operación de inicio ilustrativa 1500 del módulo de contenedor 602. El ejemplo de la Figura 15 describe modalidades en las cuales el módulo de contenedor 602, el módulo de aplicación 604, los módulos de capa 606, y el módulo de unión 608 se implementan en una forma específica. Se debe apreciar que en otras modalidades, el módulo de contenedor 602, el módulo de aplicación 604, los módulos de capa 606, y el módulo de unión 608 se implementan en otras formas.
Como se ilustra en el ejemplo de la Figura 15, la operación de inicio 1500 comienza cuando empieza la ejecución del módulo de contenedor 602 (1502). En varias modalidades, la ejecución del módulo de contenedor 602 puede comenzar en varios momentos. Por ejemplo, en algunas modalidades, la ejecución del módulo de contenedor 602 comienza c uando el sistema operativo 808 inicia I a aplicación en respuesta a la entrada del usuario 806. En otras modalidades, la ejecución del módulo de contenedor 602 comienza cuando la aplicación de servidor 1004 inicia en el sistema de servidor 902A. Incluso en otras modalidades, la ejecución del módulo de contenedor 602 inicia cuando uno de los sistemas de servidor 902 inicia. Incluso en otras modalidades, la ejecución del módulo de contenedor 602 inicia cuando el sistema de servidor 902A primero recibe una solicitud web o una solicitud de navegación para el módulo de contenedor 602.
Después de que inicia la ejecución del módulo de contenedor 602, el módulo de contenedor 602 inicia el módulo de unión 608 (1504). En algunas modalidades, el módulo de unión 608 sigue un patrón de diseño de fábrica. En tales modalidades, el módulo de contenedor 602 inicia el módulo de unión 608 al invocar un método de inicio estático del módulo de unión 608.
Diferentes módulos dé unión pueden realizar diferentes acciones cuando el módulo de contenedor 602 inicia el módulo de unión. Por ejemplo, la invocación de los métodos de inicio de algunos módulos de unión hace que el dispositivo de cómputo 104A presente una pantalla de presentación. En este ejemplo, la invocación de los métodos de inicio de otros módulos de unión no causa que el dispositivo de cómputo 104A realice cualquiera de las acciones.
Después, el módulo de contenedor 602 genera un oyente de evento (1506). En el ejemplo de la Figura 15, el código fuente de aplicación 404 define una clase de aplicación de resumen. La clase de aplicación de resumen define una operación de inicio de aplicación y una operación de navegación. El oyente de evento escucha eventos completos de carga generados por la clase de aplicación de resumen. Como .se menciona en otra parte en este documento, los eventos completos de carga comprenden referencias de capa. En casos en donde el desarrollador 102 selecciona las técnicas de despliegue de aplicación basadas en cliente, besadas en servidor, o de cubierta, los eventos de carga completa incluyen referencias de capa y el oyente de evento proporciona las referencias de capa al módulo de unión 608. En casos en donde el desarrollador 102 selecciona la técnica de despliegue híbrida, los eventos de completos de carga contienen versiones en serie de módulos de capa y el oyente de evento proporciona las versiones en serie de los módulos de capa al módulo de unión 608.
El módulo de contenedor 602 entonces inicia el módulo de aplicación 604 (1508). El módulo de aplicación 604 es un caso de una clase de aplicación definida en el código fuente de aplicación 404. La clase de aplicación extiende la clase de aplicación de resumen. La clase de aplicación supera la operación de inicio de aplicación definida por la clase de aplicación de resumen. La operación de inicio de aplicación del módulo de aplicación 604 se invoca en cualquier momento que se inicia la clase de aplicación.
Cuando se ejecuta, la operación de inicio de aplicación del módulo de aplicación 604 inicia los módulos de capa 606. Cada uno de los módulos de capa 606 es un caso de una clase de capa diferente definida en el código de fuente de capa 406. Cada una de las clases de capa se extiende en una clase de capa de resumen. La clase de capa de resumen define una operación de carga. Cada una de las clases de capa implementa la operación de carga en diferentes formas. Consecuentemente, las operaciones de carga de los módulos de capa tienen diferente comportamiento.
Además, cuando se ejecuta, la operación de inicio de aplicación del módulo de aplicación 604 genera un mapa de navegación que traza los URI de capa a los módulos de capa. El mapa de navegación es un objeto de software que traza URI de capa a los módulos de capa. Diferentes aplicaciones tienen diferentes clases de aplicación. Las diferentes clases de aplicación implementan diferentes métodos de inicio de aplicación. Por lo tanto, diferentes aplicaciones pueden iniciar diferentes mapas de navegación.
La operación de inicio de aplicación también da inicio a un estilo para la aplicación. El estilo para la aplicación puede controlar la apariencia de texto en la aplicación. En algunas modalidades, los estilos también pueden iniciarse para capas o tipos individuales de elementos de contenido.
Lo siguiente es una clase de aplicación de código ilustrativo utilizado en algunas modalidades: utilizar Sistema; utilizar Sistema. Colecciones. Genérico; utilizar Sistema. Linq; utilizar Sistema;Texto; utilizar i Factr. úcleo; utilizar i Factr. Núcleo. Estilos; espaciodenombre Más Vendidos { clase publica APP: ¡App superación pública vacío EnCargadeApp () { //Establecer el título de la aplicación Título = "Más Vendidos" //Agregar mapeos de navegación MapadeNavegación. Agregare", Nueva ListadeCategoríaQ); MapadeNavegación.Agregar("{Categoría}", nueva ListadeLibroQ); MapadeNavegación. Agregar(" {Categoría }/{ Libro}", nuevos DetallesdelLibroQ); //Establecer URI de Navegación Predeterminado NavegarEnCarga = ""; //Establecer el estilo de aplicación Estilo = nuevo EstiloQ { ColordeEncabezado = nuevo Estilo. Color(0, 0,0), }; } } } Después de iniciar el objeto de aplicación, el módulo de contenedor 602 proporciona una referencia de objeto de aplicación al módulo de unión 608 (1510). La referencia de objeto de aplicación es una referencia al objeto de aplicación. En el ejemplo de la Figura 15, el módulo de unión 608 tiene una propiedad de aplicación. El módulo de contenedor 602 asigna la referencia de objeto de aplicación a la propiedad de aplicación del módulo de unión 608.
El módulo de contenedor 602 entonces genera una solicitud de navegación inicial (1512). La solicitud de navegación inicial especifica el URI de capa de la capa de inicio de la aplicación. En el ejemplo de la Figura 15, el módulo de contenedor 602 genera la solicitud de navegación inicial al invocar un método para navegación de la clase de aplicación de resumen, proporcionar e I U Rl de capa de la capa de inicio como un parámetro.
Lo siguiente es un código fuente de contenedor ilustrativo utilizado con una unión de Consola. La unión de Consola puede utilizarse con plataformas de Telnet: utilizar Sistema; utilizar Sistema. Colecciones. Genérico; utilizar Sistema. Linq; utilizar Sistema;Texto; utilizar ¡Factr. Consola; utilizar ¡Factr. Núcleo; utilizar ¡Factr. úcleo. Capas; espaciodenombre Ejemplo. Consola. Contenedor { clase de Programa { estática vacía Principal (secuencia[] args) { FábricadeConsola. Inicia r(); ¡App. EnlaCargadeCargaCompleta += (¡Capa capa) = > { FábricadeConsola. Caso. CapadeSalida(capa);}; FábricadeConsola. LaApp = nuevo Ejemplo. App(); ¡App.Navegar(FábricadeConsola.LaApp.NavegarEnCarga); } } } Lo siguiente es un código fuente de contenedor ilustrativo utilizado con una unión Compacta. La unión Compacta puede utilizarse con plataformas de MICROSOFT WINDOWS CE. utilizar Sistema; utilizar Sistema. Linq; utilizar Sistema. Colecciones. Genérico; utilizar Sistema. Ventanas. Formas; utilizar ¡Factr. úcleo; utilizar ¡Factr. Núcleo. Capas; utilizar ¡Factr. Compacto; espaciodenombre Ejemplo { clase estética programa { ///<resumen> ///El punto de entrada principal para la aplicación. ///</resumen> [SecuenciaMTA] estática vacío Principal () { FábricaCompacta.lniciar(); iApp. EnCargadeCapaCompleta += (¡Capa capa) => { Fábrica Compacta. Caso. CapadeSalida( capa);}; //TODO: Iniciar su aplicación ¡Factr y establecer la propiedad de App de Fábrica //Ejemplo: FábricaCompacta. LaApp = nuevaMiApp. App(); FábricaCompacta.LaApp = nuevo Ejemplo. App(); ¡App.Navegar(FábricaCompacta.LaApp.NavegarEnCarga); Aplicación. Cor re r(FábricaCom pacta. Caso. Forma); } } } Lo siguiente es un código fuente de contenedor ilustrativo utilizado con una unión de MonoTouch. La unión de MonoTouch puede utilizarse con el IPHONE de APPLE y las plataformas de IPAD de APPLE. uti lizar Sistema; uti lizar Sistema. Colecciones. Genérico; uti lizar Sistema. Linq; uti lizar MonoTouch. Base; uti lizar MonoTouch. UIKit; uti lizar ¡Factr. Núcleo; uti lizar ¡Factr. Núcleo. Capas; uti lizar ¡Factr. Táctil; espaciodenom bre Ejemplo { clase pública aplicación { estático vacío Principal (secuencia[] args) { AplicaciónUI. Principal (args, nulo, "DelegadodeApp"); } } [Registro ("DelegadodeApp")] clase parcial publica DelegadodeApp: DelegadodeAplicaclónUI { superación publica b ool de InicioTerminado (AplicaciónUI app, opciones de DiccionarioNS) { FabricaTáctil.lniciar(); iApp. EnCargadeCapaCompleta += (¡Capa capa) => { lnvocarEnSecuenciaPrincipal(delegado {FabricaTáctil. Caso. CapadeSalida(capa) ;});}; FabricaTáctil. LaApp = nuevo Ejemplo. App(); ¡App.Navegar(FabricaTáctil.LaApp.NavegarEnCarga); regresar verdadero; } anulación pública vacío EnActivado (Aplicación de aplicación Ul) { } } } La Figura 16 es un cuadro de flujo que ilustra una operación de navegación ilustrativa 1600 del módulo de aplicación 604. En algunas modalidades, el módulo de aplicación 604 realiza la operación de navegación 1600 cada vez que el módulo de aplicación 604 recibe una solicitud de navegación.
Como se ¡lustra en el ejemplo de la Figura 16, la operación de navegación 1600 inicia cuando el módulo de aplicación 604 recibe una solicitud de navegación (1602). La solicitud de navegación especifica un URI de capa. El URI de capa comprende una porción de raíz y una porción de parámetro. La porción de parámetro de un URI de capa comprende cero o más parámetros. Cada uno de los parámetros es un par de nombre-valor. Por ejemplo "http://ejemplo.com/librosapp'librold=234&lang = eng" puede ser un URI de capa. En este ejemplo, "http://ejemplo.com/librosapp" es la porción de raíz del URI de capa. En este ejemplo, la porción de parámetro del URI de capa comprende dos parámetros: "lddelibro = = 234" y "lang = eng".
En respuesta a recibir la solicitud de navegación, el módulo de aplicación 604 utiliza el URI de capa especificado por al solicitud de navegación para identificar el módulo de capa apropiado ( 1604). El módulo de capa apropiado es uno de los módulos de c apa 606. En varias modalidades, el módulo de aplicación 604 identifica el módulo de capa apropiado de varias formas. Por ejemplo, en algunas modalidades, el módulo de aplicación 604 utiliza un mapa de navegación para identificar el módulo de capa apropiado. En este ejemplo, el mapa de navegación comprende un grupo de entradas. Cada entrada traza cualquier URI de capa que satisface una expresión regular a uno particular de los módulos de capa 606.
Después de identificar el módulo de capa apropiado, el módulo de aplicación 604 proporciona una solicitud de carga al módulo de capa apropiado (1606). En varias modalidades, el módulo de aplicación 604 proporciona la solicitud de carga al módulo de capa apropiado en varias formas. Por ejemplo, en algunas modalidades, el módulo de aplicación 604 proporciona la solicitud de carga al módulo de capa apropiado al I lámar una operación de carga del módulo de capa apropiado. Cuando el módulo de aplicación 604 llama a la operación de carga del módulo de capa apropiado, el módulo de aplicación 604 proporciona los parámetros especificados en el URI a la operación de carga.
El módulo de capa apropiado puede realizar una variedad de actividades para cargar contenido en el módulo de capa apropiado. Por ejemplo, el módulo de capa apropiado puede obtener datos de Internet y cargar los datos en varios artículos de contenido en la capa. En este ejemplo, el módulo de capa apropiado puede extraer una lista de libros más venidos de un sitio web y colocar un título de cada uno de los libros en un artículo de lista en una lista en la capa. En otro ejemplo, el módulo de capa apropiado puede interactuar con cámaras, micrófonos, bocinas, y otros tipos de características de los dispositivos de cómputo 104 para cargar contenido en la capa. En; este ejemplo, tal interacción únicamente es posible con algunos tipos de dispositivos móviles.
Después de llamar la operación de carga en el módulo de capa apropiado, el módulo de aplicación 604 genera un evento completo de carga (1608). El evento completo de carga comprende una referencia de capa. La referencia de capa indica una ubicación que almacena la estructura de datos de capa generada por la operación de carga del módulo de capa apropiado.
La Figura 17 es un diagrama de bloques que ilustra un dispositivo de cómputo ilustrativo 1700. En algunas modalidades, el sistema de cómputo de desarrollador 106, los dispositivos de cómputo 104, y/o los sistemas de servidor 902 se implementan utilizando uno o más de los dispositivos de cómputo como el dispositivo de cómputo 1700. Se debe apreciar que en otras modalidades, el sistema de cómputo de desarrollador 106, los dispositivos de cómputo 104, y/o los sistemas de servidor 902 se implementan utilizando los dispositivos de cómputo que tienen componentes de hardware diferentes a aquellos ilustrados en el ejemplo de la Figura 17.
En diferentes modalidades, los dispositivos de cómputo se implementan en diferentes formas. Por ejemplo, en el ejemplo de la Figura 17, el dispositivo de cómputo 1700 comprende una memoria 1702, un sistema de procesamiento 1704, un dispositivo de almacenamiento secundario 1706, una tarjeta de interfase de red 1708, una interfase de video 1710, un dispositivo de presentación 1712, una interfase de componente externo 1714, un dispositivo de almacenamiento externo 1716, un dispositivo de entrada 1718, una impresora 1720, y un medio de comunicación 1722. En otras modalidades, los dispositivos de cómputo se implementan utilizando más o menos componentes de hardware. Por ejemplo, en otra modalidad ilustrativa, un dispositivo de cómputo no incluye una interfase de video, un dispositivo de presentación, un dispositivo de almacenamiento externo, o un dispositivo de entrada.
La memoria 1702 incluye uno o más medios de almacenamiento de datos legibles por computadora capaces de almacenar datos y/o instrucciones. Como se utiliza en este documento, un medio de almacenamiento de datos es un dispositivo o artículo de fabricación que almacena datos y/o instrucciones de software legibles por un dispositivo de cómputo. En diferentes modalidades, la memoria 1702 se implementa en diferentes formas. Por ejemplo, en varias modalidades, la memoria 1702 se implementa utilizando varios tipos de medios de almacenamiento de datos legibles por computadora. Tipos ilustrativos de medios de almacenamiento de datos legibles por computadora incluyen, pero no se limita a, memoria de acceso aleatorio dinámico (DRAM), memoria de acceso aleatorio dinámico sincrónico de velocidad de datos doble (DDR SDRAM), DRAM de latencia reducida, DDR2 SDRAM, DDR3 SDRAM, RAM de conductor común de Ram, memoria de estado sólido, memoria flash, memoria de solo lectura (ROM), ROM programable eléctricamente borrable, y otros tipos de dispositivos y/o artículos de fabricación que almacenan datos.
El sistema de procesamiento 1704 incluye uno o más circuitos integrados físicos que ejecutan selectivamente instrucciones de software. En varias modalidades, el sistema de procesamiento 1704 se implementa en varias formas. Por ejemplo, en una modalidad ilustrativa, el sistema de procesamiento 1704 se implementa como uno o más núcleos de procesamiento. Por ejemplo, en esta modalidad, el sistema de procesamiento 1704 puede implementarse como uno o más microprocesadores de la serie Intel CORE™. En otra modalidad ilustrativa, el sistema de procesamiento 1704 se implementa como uno o más microprocesadores o microcontroladores separados. Incluso en otra modalidad ilustrativa, el sistema de procesamiento 1704 se implementa como un ASIC que proporciona funcionalidad especifica. Incluso en otra modalidad ilustrativa, el sistema de procesamiento 1704 proporciona funcionalidad especifica al utilizar un ASIC y al ejecutar instrucciones de software.
En diferentes modalidades, el sistema de procesamiento 1704 ejecuta instrucciones de software en diferentes grupos de instrucción. Por ejemplo, en varias modalidades, el sistema de procesamiento 1704 ejecuta instrucciones de software en grupos de instrucción tal como el grupo de instrucción x86, el grupo de instrucción POWER, un grupo de instrucción RISC, el grupo de instrucción SPARC, el grupo de instrucción IA-64, el grupo de instrucción MIPS, y/u otros grupos de instrucción.
El dispositivo de almacenamiento secundario 1706 incluye uno o más medios de almacenamiento de datos legibles por computadora. El dispositivo de almacenamiento secundario 1706 almacena datos e instrucciones de software no directamente accesibles por el sistema de procesamiento 1704. En otras palabras, el sistema de procesamiento 1704 realiza una operación l/O para recuperar datos y/o instrucciones de software del dispositivo de almacenamiento secundario 1706. En varias modalidades, el dispositivo de almacenamiento secundario 1706 se implementa por varios tipos de medios de almacenamiento de datos legibles por computadora. Por ejemplo, el dispositivo de almacenamiento secundario 1706 puede implementarse por uno o más discos magnéticos, unidades de cinta magnética, discos CD-ROM, discos DVD-ROM, discos Blu-Ray, dispositivos de memoria de estado sólido, cartuchos de Bernoulli, y/u otros tipos de medios de almacenamiento de datos legibles por computadora.
La tarjeta de interfase de red 1708 permite al dispositivo de cómputo 1700 enviar datos a y recibir datos de una red de comunicación de computadora. En diferentes modalidades, la tarjeta de interfase de red 1708 se implementa en diferentes formas. Por ejemplo, en varias modalidades, la tarjeta de interfase de red 1708 se implementa como una interfase de Ethernet, una interfase de red de anillo de red, una interfase de red de fibra óptica, una interfase de red inalámbrica (por ejemplo, WiFi, WiMax, etc.), u otro tipo de interfase de red.
La interfase de video 1710 permite al dispositivo de cómputo 1700 enviar información de video al dispositivo de presentación 1712. En diferentes modalidades, la interfase de video 1710 se implementa en diferentes formas. Por ejemplo, en una modalidad, la interfase de video 1710 se integra en una tarjeta madre del dispositivo de cómputo 1700. En otra modalidad ilustrativa, la interfase de video 1710 es una tarjeta de expansión de video. Tipos ilustrativos de tarjetas de expansión de video incluyen tarjetas de gráficos RADEON® fabricadas por ATI Technologies, Inc. de Markham, Ontario, tarjetas gráficas GEFORCE® fabricadas por Nvidia Corporation de Santa Clara, California, y otros tipos de Tarjetas de gráficos.
En varias modalidades, el dispositivo de presentación 1712 se implementa como varios tipos de dispositivos de presentación. Tipos ilustrativos de dispositivos de presentación incluyen, pero no están limitados a, pantallas de tubo de rayos de cátodo, paneles de presentación LCD, paneles de presentación de pantalla de plasma, paneles de presentación sensibles al tacto, pantallas LED, proyectores, y otros tipos de dispositivos de presentación. En varias modalidades, la interfase de video 1710 se comunica con el dispositivo de presentación 1712 en varias formas. Por ejemplo, en varias modalidades, la interfase de video 1710 se comunica con el dispositivo de presentación 1712 a través de un conector común en serie universal (USB), un conector VGA, un conector de interfase visual digital (DVI), un conector de Video S, una interfase de interfase de interfase multimedia de alta definición (HDMI), un conector de puerto de presentación, u otros tipos de conectores.
La interfase de componente externa 1714 permite al dispositivo de cómputo 1700 comunicarse con dispositivos externos. En varias modalidades, la interfase de componente externo 1714 se implementa en diferentes formas. Por ejemplo, en una modalidad ilustrativa, la interfase de componente externa 1714 es una interfase USB. En otras modalidades ilustrativas, el dispositivo de cómputo 1700 es una interfase FireWire, una interfase de puerto en serie, una interfase de puerto paralelo, una interfase PS/2, y/u otro tipo de interfase que permite al dispositivo de cómputo 1700 comunicarse con componentes externos.
En diferentes modalidades, la interfase de componente externa 1714 permite al dispositivo de cómputo 1700 comunicarse con diferentes componentes externos. Por ejemplo, en el ejemplo de la Figura 17, la interfase de componente externo 1714 permite al dispositivo de cómputo 1700 comunicarse con el dispositivo de almacenamiento externo 1716, el dispositivo de entrada 1718, y la impresora 1720. En otras modalidades, la interfase de componente externa 1714 permite al dispositivo de cómputo 1700 comunicarse con más o menos componentes externos. Otros tipos ilustrativos de componentes externos incluyen, pero no están limitados a, bocinas, cubiertas de carga de teléfono, módems, puertos de jugador de medios, u otros dispositivos de cómputo, escáneres, cámaras digitales, un lector de huella digital, y otros, dispositivos que pueden conectarse al dispositivo de cómputo 1700.
El dispositivo de almacenamiento externo 1716 es un componente externo que comprende uno o más medios de almacenamiento de datos legibles por computadora. Diferentes implementaciones del dispositivo de cómputo 1700 que interconecta diferentes tipos de dispositivos de almacenamiento externos. Diferentes tipos de dispositivo de almacenamiento externo incluyen, pero no se limitan a, unidades de cinta magnética, módulos de memoria flash, unidades de disco magnético, unidades de disco óptico, unidades de memoria flash, unidades de disco Zip, lectores múltiples ópticos, y otros tipos de dispositivos que comprenden uno o más medios de almacenamiento de datos legibles por computadora. El dispositivo de entrada 1718 es un componente externo que proporciona entrada de usuario al dispositivo de cómputo 1700. Diferentes implementaciones del dispositivo de cómputo 1700 se interconectan con diferentes tipos de dispositivos de entrada. Tipos ilustrativos de dispositivos de entrada incluyen, pero no se limitan a, teclados, ratones, seguibolas, dispositivos de entrada de estilete, almohadillas, teclados numéricos, micrófonos, palancas de mando, pantallas de presentación sensibles al tacto, y otros tipos de dispositivos que proporcionan entrada de usuario al dispositivo de cómputo 1700. La impresora 1720 es un dispositivo externo que imprime datos en papel. Diferentes implementaciones del dispositivo de cómputo 1700 se interconectan con diferentes tipos de impresoras. Tipos ilustrativos de impresoras incluyen, pero no están limitados a impresoras láser, impresoras de inyección de tinta, impresoras de fotografías, máquinas copiadoras, máquinas de fax, impresoras de recibo, impresoras de matriz de punto, u otros tipos de dispositivos que imprimen datos en papel.
El medio de comunicación 1722 facilita la comunicación entre los componentes de hardware de los d ispositivos de cómputo 1700. En diferentes modalidades, el medio de comunicaciones 1722 facilita comunicación entre diferentes componentes del dispositivo de cómputo 1700. Por ejemplo, en el ejemplo de la Figura 17, el medio de comunicaciones 1722 facilita comunicación entre la memoria 1702, el sistema de procesamiento 1704, el dispositivo de almacenamiento secundario 1706, la tarjeta de interfase de red 1708, la interfase de video 1710, y la interfase de componente externo 1714. En diferentes implementaciones del dispositivo de cómputo 1700, el medio de comunicaciones 1722 se implementa en diferentes formas. Por ejemplo, en diferentes implementaciones del dispositivo de cómputo 1700, el medio de comunicaciones 1722 puede implementarse como un conductor PCI, un conductor común Express PCI, un conductor común de puerto de gráficos acelerado (AGP), una interconexión INFINIBAND®, una interconexión de fijación de tecnología avanzada (ATA) en serie, una interconexión ATA paralela, una interconexión de Canal de Fibra, un conductor común USB, una Interfase de interfase de sistema de Cómputo Pequeña (SCSI), u otro tipo de medio de comunicaciones.
La memoria 1702 almacena varios tipos de datos y/o instrucciones de software. Por ejemplo, en el ejemplo de la Figura 17, la memoria 1702 almacena un Sistema de Entrada/Salida Básico (BIOS) 1724, un sistema operativo 1726, un software de aplicación 1728, y datos de programa 1730. El BIOS 1724 incluye un grupo de instrucciones de software que, cuando se ejecutan por el sistema de procesamiento 1704, causan que el dispositivo de cómputo 1700 se reinicie. El sistema de cómputo 1726 incluye un grupo de instrucciones de software que, cuando se ejecutan por el sistema de procesamiento 1704, causan que el dispositivo de cómputo 1700 proporcione un sistema operativo que coordina las actividades y participación de recursos del dispositivo de cómputo 1700. Tipos ilustrativos del sistema operativo incluyen, pero no se limitan a, WINDOWS® de Microsoft, Linux, Unix, OS X® de Apple, IOS® de Apple, WEBOS® de HP, OS CHROME® de Google, OS ANDROID® de Google, y así sucesivamente. El software de aplicación 1728 incluye un grupo de instrucciones de software que, cuando se ejecutan por el sistema de procesamiento 1704, hacen que el dispositivo de cómputo 1700 proporcione aplicaciones a un usuario del dispositivo de cómputo 1700. Los datos de programa 1730 son datos generados y/o utilizados por el software de aplicación 1728.
Las varias modalidades descritas anteriormente se proporcionan a manera de ilustración únicamente y no deben interpretarse como limitantes. Aquellos expertos en la técnica reconocerán fácilmente que pueden hacerse varias modificaciones y cambios sin seguir las modalidades ilustrativas y las aplicaciones ilustradas y descritas aquí. Por ejemplo, las operaciones mostradas en las figuras son simplemente ejemplos. En varias modalidades, operaciones similares pueden incluir más o menos pasos a aquellos mostrados en las figuras. Además, en otras modalidades, operaciones similares pueden ser los pasos de las operaciones mostrados en las figuras en diferentes órdenes.

Claims (21)

REIVINDICACIONES
1. - Un método que comprende: ingresar el código fuente lógico d e negocios, el código fuente lógico de negocios no contiene cantidades substanciales de código específico para cualquier plataforma y el código fuente lógico de negocios define substancialmente toda la funcionalidad de la aplicación que se especifica para una aplicación; compilar el código de plataforma específica asociado con una primera plataforma y el código fuente lógico de negocios, generando consecuentemente un primer grupo de instrucciones ejecutables por computadora, la ejecución del primer grupo de instrucciones ejecutables por computadora hacen que los dispositivos que proporcionan la primera plataforma proporcionen la aplicación; y compilar código de plataforma específica asociado con una segunda plataforma y código fuente lógico de negocios, generando consecuentemente un segundo grupo de instrucciones ejecutables por computadora, la ejecución del segundo grupo de instrucciones ejecutables por computadora haciendo que los dispositivos que proporcionan la segunda plataforma proporcionen la aplicación.
2. - Un método que comprende: generar un primer grupo de instrucciones ejecutables por computadora para compilar un primer grupo de código fuente, el primer grupo de código fuente incluye un código fuente lógico de negocios, el primer grupo de instrucciones ejecutables por computadora adecuado para ejecución en una primera plataforma; y generar un segundo grupo de instrucciones ejecutables por computadora al compilar un segundo grupo de código fuente, el segundo grupo de código fuente incluye un código fuente lógico de negocios, el segundo grupo de instrucciones ejecutables por computadora adecuado para ejecución en una segunda plataforma, en donde el código fuente lógico de negocios está substancialmente libre de código específico para la primera plataforma y substancialmente libre de código específico para la segunda plataforma, en donde el código fuente lógico de negocios define substancialmente toda la funcionalidad de la aplicación que es específica para la aplicación.
3. - El método de acuerdo con la reivindicación 2, en donde generar el primer grupo de instrucciones ejecutables por computadora comprende compilar el primer grupo de código de plataforma específica, el primer grupo de código de plataforma específica siendo especifico para la primera plataforma; y en donde generar el segundo grupo de instrucciones ejecutables por computadora comprende compilar un segundo grupo de código de plataforma específica, el segundo grupo de código de plataforma específica siendo especifico para la segunda plataforma.
4. - El método de acuerdo con la reivindicación 3, que además comprende: copiar el primer grupo de código de plataforma específica de un sistema de almacenamiento de datos proporcionado por una parte externa.
5. - El método de acuerdo con la reivindicación 3, en donde generar el primer grupo de instrucciones ejecutables por computadora comprende compilar código fuente de capa, el código fuente de capa no contiene código específico para !a primera plataforma o la segunda plataforma, el código fuente de capa define una clase de capa que comprende una operación de carga que carga el contenido dentro de un módulo de capa, el módulo de capa siendo un caso de la clase de capa; en donde generar el segundo grupo de instrucciones ejecutables por computadora comprende compilar el segundo código fuente de capa; en donde el primer grupo de código de plataforma especifica define una operación que, cuando se ejecuta en la primera plataforma, utiliza el módulo de capa para generar datos de salida útiles para para presentar una capa a un usuario; y en donde el segundo grupo de código específico de plataforma define una operación que, cuando se ejecuta en la segunda plataforma, utiliza el módulo de capa para generar datos de salida útiles para presentar la capa a otro usuario.
6. - El método de acuerdo con la reivindicación 5, en donde la aplicación tiene un grupo de capas, cada una de las capas asociada con un URI de capa; y en donde generar el primer grupo de instrucciones ejecutables por computadora comprende compilar código fuente de aplicación, el código fuente de aplicación no contiene código específico para la primera plataforma o la segunda plataforma, el código fuente de aplicación define funcionalidad de un módulo de aplicación, el módulo de aplicación teniendo una operación de navegación que se invoca cuando se recibe una solicitud de navegación, la operación de navegación proporciona una solicitud de carga al módulo de capa cuando un URI de capa especificado por la solicitud de navegación está asociado con el módulo de capa, la solicitud de carga comprende una solicitud para realizar la operación de carga del módulo de capa.
7. - El método de acuerdo con la reivindicación 6, en donde el primer grupo de código de plataforma específica define funcionalidad de un primer módulo de unión, el primer módulo de unión tiene una operación de salida de capa que procesa módulos de capa para generar datos de salida útiles para presentar capas que utilizan características de interfase de usuario que son nativas para la primera plataforma; y en donde el segundo grupo de código de plataforma específica define funcionalidad de un segundo módulo de unión, el segundo módulo de unión tiene una operación de salida de capa diferente que procesa módulos de capa para generar datos de salida útiles para presentar la capa utilizando características de interfase de usuario que son nativas para la segunda plataforma.
8. - El método de acuerdo con la reivindicación 7, en donde generar el primer grupo de instrucciones ejecutables por computadora comprende generar un primer paquete, el primer paquete comprende instrucciones ejecutables por computadora que definen funcionalidad del módulo de capa, el módulo de aplicación, y el primer módulo de unión, el primer paquete adecuado para instalación en dispositivos de cómputo que proporcionan la primera plataforma.
9. - El método de acuerdo con la reivindicación 6, que además comprende generar un paquete de aplicación de cubierta que comprende instrucciones ejecutables por computadora que cuando se ejecutan en un dispositivo hacen que el dispositivo proporcione una aplicación de cubierta que parece estar realizando operaciones de la aplicación, la aplicación de cubierta realmente enviando s olicitudes de navegación al módulo de aplicación y recibiendo datos de interfase en serie del primer módulo de unión, el módulo de aplicación y el primer módulo de unión operando en un sistema de servidor.
10. - El método de acuerdo con la reivindicación 6, en donde generar el grupo de instrucciones comprende: generar un paquete de cliente que comprende instrucciones que definen funcionalidad del primer módulo de unión, el paquete de cliente adecuado para instalación en dispositivos de cómputo que proporcionan la primera plataforma; y generar un paquete de servidor que comprende instrucciones que definen funcionalidad del módulo de capa y el módulo de aplicación, el paquete de servidor adecuado para instalación en dispositivos de servidor.
11. - El método de acuerdo con la reivindicación 2, que además comprende: distribuir el primer grupo de instrucciones ejecutables por computadora a dispositivos que proporcionan la primera plataforma y que son capaces de ejecutar el primer grupo de instrucciones ejecutables por computadora; y distribuir el segundo grupo de instrucciones ejecutables por computadora a dispositivos que proporcionan la segunda plataforma y que son capaces de ejecutar el segundo grupo de instrucciones ejecutables por computadora.
12. - El método de acuerdo con la reivindicación 11, en donde distribuir el primer grupo de instrucciones ejecutables por computadora comprende hacer el primer grupo de instrucciones ejecutables por computadora disponible para compra en una tienda de aplicación; y en donde distribuir el segundo grupo de instrucciones ejecutables por computadora comprende hacer el segundo grupo de instrucciones ejecutables por computadora disponible para compra en la tienda de aplicación u otra tienda de aplicaciones.
13. - El método de acuerdo con la reivindicación 11, que además comprende: en donde distribuir el primer grupo de instrucciones ejecutables por computadora comprende empujar el primer grupo de instrucciones ejecutables por computadora fuera a dispositivos en una organización que proporciona la primera plataforma; y en donde distribuir el segundo grupo de instrucciones ejecutables por computadora comprende empujar el segundo grupo de instrucciones ejecutables por computadora fuera a dispositivos en la organización que proporciona la segunda plataforma.
14.- El método de acuerdo con la reivindicación 12, en donde el código fuente lógico de negocios no incluye código que se ejecuta condicionalmente dependiendo de en qué plataforma está corriendo la aplicación.
15.- Un método que comprende: obtener un primer grupo de código de plataforma específica y un segundo grupo de código de plataforma específica de una o más partes externas, el primer grupo de código de plataforma específica está asociada con una primera plataforma, el segundo grupo de código de plataforma específica está asociado con una segunda plataforma; desarrollar código fuente lógico de negocios para una primera aplicación, el código fuente lógico de negocios define substancialmente toda la funcionalidad de la primera aplicación que es específica para la primera aplicación, el primer grupo de c ódigo de plataforma específica y el segundo grupo de código de plataforma específica estando substancialmente libres de código específico para la primera aplicación; utilizar uno o más dispositivos de cómputo para generar un primer grupo de instrucciones ejecutables por computadora y un segundo grupo de instrucciones ejecutables por computadora, en donde uno o más dispositivos de cómputo generan el primer grupo de instrucciones ejecutables por computadora al compilar un primer grupo de código fuente, el primer grupo de código fuente incluye el código fuente lógico de negocios y el primer grupo de código de plataforma específica; y en donde uno o más dispositivos de cómputo generan el segundo grupo de instrucciones ejecutables por computadora al compilar un segundo grupo de código fuente, el segundo grupo de código fuente incluye el código fuente lógico de negocios y el segundo grupo de código de plataforma específica.
16 - El método de acuerdo con la reivindicación 15, que además comprende: desarrollar código fuente lógico de negocios para una segunda aplicación; y utilizar el código fuente lógico de negocios para la segunda aplicación, el primer grupo de código fuente de plataforma específica, y el segundo grupo de código fuente de plataforma específica para generar grupos de instrucciones ejecutables por computadora adecuados para ejecución en las p rimeras y segundas plataformas.
17.- El método de acuerdo con la reivindicación 15, que además comprende: instalar el primer grupo de instrucciones ejecutables por computadora en un primer dispositivo, el primer dispositivo proporciona la primera plataforma, la ejecución del primer grupo de instrucciones ejecutables por computadora por el primer dispositivo causando que el primer dispositivo presente interfases de usuario de la primera aplicación utilizando únicamente características de interfase de usuario que son nativas para la primera plataforma; y instalar el segundo grupo de instrucciones ejecutables por computadora en un segundo dispositivo, el segundo dispositivo proporciona la segunda plataforma, la ejecución del segundo grupo de instrucciones ejecutables por computadora por el segundo dispositivo causando que el segundo dispositivo presente las interfases de usuario de la primera aplicación utilizando únicamente características de interfase de usuario que son nativas para la segunda plataforma.
18.- El sistema de cómputo que comprende: uno o más medios de almacenamiento de datos que almacenan: instrucciones ejecutables por computadora; y código fuente lógico de negocios para una aplicación, el código fuente lógico de negocios substancialmente libre de código fuente específico para cualquier plataforma, el código fuente lógico de negocios define substancialmente toda la funcionalidad de la aplicación que es específica para la aplicación; y una unidad de procesamiento que lee las instrucciones de uno o más medios de almacenamiento de datos y ejecuta las instrucciones, la ejecución de las instrucciones por la unidad de procesamiento haciendo que el sistema de cómputo utilice el código fuente lógico de negocios para generar múltiples paquetes, los paquetes adecuados para ejecución en diferentes plataformas, la ejecución de los paquetes en las plataformas causando que los dispositivos de cómputo que proporcionan las plataformas proporcionen la aplicación.
19. - El sistema de cómputo de acuerdo con la reivindicación 18, en donde las diferentes plataformas incluyen plataformas proporcionadas por diferentes tipos de dispositivos móviles.
20. - Un medio de almacenamiento de datos legibles por computadora que almacena instrucciones que, cuando se ejecutan por una unidad de procesamiento de un sistema de cómputo, hacen que el sistema de cómputo: genere un primer grupo de instrucciones al compilar código de plataforma específica asociado con una primera plataforma y código fuente lógico de negocios, la ejecución del primer grupo de instrucciones causando que los dispositivos proporcionen la primera plataforma para proporcionar una aplicación, el código fuente lógico de negocios no contiene cantidades substanciales de código específico para cualquier plataforma, el código fuente lógico dé negocios define substancialmente toda la funcionalidad de la aplicación que es específica para la aplicación; y genere un segundo grupo de instrucciones al compilar código de plataforma específica a sociado con una segunda plataforma y el código fuente lógico de negocios, la ejecución del segundo grupo de instrucciones haciendo que los dispositivos que proporcionan la segunda plataforma proporcionen la aplicación.
21.- El medio de almacenamiento de datos legible por computadora de acuerdo con la reivindicación 20, en donde el código fuente lógico de negocios define una pluralidad de capas; en donde la ejecución del primer grupo de instrucciones hace que los dispositivos que proporcionan la primera plataforma carguen el contenido dentro de las capas y presenten el contenido en las capas utilizando características de interfase de usuario que son nativas para la primera plataforma; y en donde la ejecución del segundo grupo de instrucciones causa que los dispositivos que proporcionan la segunda plataforma carguen el contenido dentro de las capas y presenten el contenido en las capas utilizando características de interfase que son nativas para la primera plataforma.
MX2012012015A 2010-04-15 2011-04-15 Estructura de aplicacion de plataforma cruzada. MX2012012015A (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US32467210P 2010-04-15 2010-04-15
PCT/US2011/032714 WO2011130651A1 (en) 2010-04-15 2011-04-15 Cross-platform application framework

Publications (1)

Publication Number Publication Date
MX2012012015A true MX2012012015A (es) 2013-06-05

Family

ID=44789174

Family Applications (1)

Application Number Title Priority Date Filing Date
MX2012012015A MX2012012015A (es) 2010-04-15 2011-04-15 Estructura de aplicacion de plataforma cruzada.

Country Status (11)

Country Link
US (3) US8601449B2 (es)
EP (1) EP2558921A4 (es)
JP (1) JP5845522B2 (es)
KR (1) KR101807897B1 (es)
CN (1) CN102971688B (es)
AU (1) AU2011239471A1 (es)
BR (1) BR112012026301A2 (es)
CA (1) CA2796433C (es)
MX (1) MX2012012015A (es)
SG (1) SG184864A1 (es)
WO (1) WO2011130651A1 (es)

Families Citing this family (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2777594A1 (en) * 2009-10-15 2011-04-21 Web Impact Inc. System and method for managing applications for multiple computing endpoints and multiple endpoint types
MX2012012015A (es) 2010-04-15 2013-06-05 Itr Group Inc Estructura de aplicacion de plataforma cruzada.
US8392289B1 (en) 2011-04-04 2013-03-05 Google Inc. Cancelling a purchasing request
US8635522B2 (en) * 2011-05-12 2014-01-21 Sybase, Inc. Hybrid web container for cross-platform mobile applications
WO2013022987A1 (en) * 2011-08-09 2013-02-14 Rafter, Inc. Systems and methods for generating comparison information for all course books in student schedules
US8819638B2 (en) * 2011-09-20 2014-08-26 Alcatel Lucent Application protoyping suite
WO2013066286A1 (en) * 2011-10-31 2013-05-10 Hewlett-Packard Development Company, L.P. Remote software depolyment across a network
US9197720B2 (en) 2011-12-07 2015-11-24 Yahoo! Inc. Deployment and hosting of platform independent applications
US9235398B2 (en) * 2011-12-07 2016-01-12 Yahoo! Inc. Development of platform independent applications
US9268546B2 (en) 2011-12-07 2016-02-23 Yahoo! Inc. Deployment and hosting of platform independent applications
US9158520B2 (en) * 2011-12-07 2015-10-13 Yahoo! Inc. Development of platform independent applications
CN103248662B (zh) * 2012-02-13 2017-11-03 联想(北京)有限公司 数据处理方法和装置
WO2013134813A1 (en) * 2012-03-10 2013-09-19 Evado Holdings Pty Ltd A method and system of application development for multiple device client platforms
US8910115B2 (en) * 2012-04-02 2014-12-09 Kony Solutions, Inc. Systems and methods for application development
US9176751B2 (en) * 2012-04-04 2015-11-03 Xerox Corporation Tools and methods for customizing multi-function devices
CN103713889B (zh) * 2012-09-29 2018-07-13 三亚中兴软件有限责任公司 一种应用的开发、编译和调试方法以及装置
US20140149966A1 (en) * 2012-11-27 2014-05-29 Inadev Corporation Application, build, integration, and release management system and method
US9239713B1 (en) * 2013-03-06 2016-01-19 MobileForce Software, Inc. Platform independent rendering for native mobile applications
US9218162B1 (en) * 2013-03-06 2015-12-22 MobileForce Software, Inc. Cross-platform mobile application specification and automatic synthesizer
US9430207B1 (en) * 2013-03-13 2016-08-30 MobileForce Software, Inc. Automated cross-platform native mobile application generation with cloud driven user interface and workflow synthesis
US9104519B1 (en) * 2013-06-17 2015-08-11 Symantec Corporation Provisioning partner aware apps on sandboxed operating systems
US9032379B2 (en) * 2013-06-21 2015-05-12 Oracle International Corporation Platform specific optimizations in static compilers
WO2015030759A1 (en) * 2013-08-29 2015-03-05 Hewlett-Packard Development Company, L.P. Application broadcast and compilation
US11785061B2 (en) * 2013-09-16 2023-10-10 Insyde Software Corp. System and method to share an application with another device
US20150128110A1 (en) * 2013-11-05 2015-05-07 Alexander Falk Mobile application development and deployment
US9170808B2 (en) * 2013-11-07 2015-10-27 Sap Se Dynamic containerization
CN103677824A (zh) * 2013-12-06 2014-03-26 无锡易视腾科技有限公司 基于定制浏览器的ott终端解决方案
US9692808B2 (en) * 2014-01-24 2017-06-27 Adobe Systems Incorporated Code path directives for controlling in-app experiences
US9880816B2 (en) * 2014-11-27 2018-01-30 Sap Se Simulator with local resource capabilities
US9501263B2 (en) * 2014-12-18 2016-11-22 Oracle International Corporation Automated model derivation and alignment
US9582225B2 (en) 2015-03-27 2017-02-28 Kyocera Document Solutions Inc. Document solution management platform in a decentralized environment
US9965271B2 (en) * 2015-04-28 2018-05-08 Microsoft Technology Licensing, Llc Projection of build and design-time inputs and outputs between different build environments
US10459600B2 (en) 2015-06-24 2019-10-29 Microsoft Technology Licensing, Llc Conversion of platform-independent accessibility logic into platform-specific accessibility functionality
US20170052780A1 (en) * 2015-08-21 2017-02-23 Zih Corp. Methods and Apparatus to Adapt Legacy Applications to Target Platforms
CN107239265B (zh) * 2016-03-28 2020-04-07 阿里巴巴集团控股有限公司 Java函数与C函数的绑定方法及装置
US10506017B2 (en) 2016-05-20 2019-12-10 Adobe Inc. Manipulation of PDF file content through HTTP requests
US10372443B2 (en) * 2016-10-18 2019-08-06 Oracle International Corporation Multi-platform pattern-based user interfaces
CN108614705B (zh) * 2017-02-07 2022-06-03 腾讯科技(深圳)有限公司 一种数据编译处理方法及终端
TWI667613B (zh) * 2017-11-02 2019-08-01 聲達資訊股份有限公司 前端整合開發管理系統及其方法
CN109445777B (zh) * 2017-12-29 2022-10-28 贵阳朗玛信息技术股份有限公司 基于Android平台多个定制产品的开发框架及方法
US11249734B2 (en) * 2018-02-07 2022-02-15 Sangeeta Patni Tri-affinity model driven method and platform for authoring, realizing, and analyzing a cross-platform application
US10437572B1 (en) 2018-08-03 2019-10-08 King Fahd University Of Petroleum And Minerals Methods, computer readable media, and systems for compiling concise expressive design pattern source code
CN109582316A (zh) * 2018-11-15 2019-04-05 北京深思数盾科技股份有限公司 一种跨平台编译方法、装置、系统、服务器及存储介质
US11232172B2 (en) 2018-12-04 2022-01-25 Sap Se Collaborative web application and data system
US10838744B2 (en) * 2018-12-04 2020-11-17 Sap Se Web component design and integration system
CN109814853A (zh) * 2019-01-18 2019-05-28 宜创(北京)科技有限公司 基于可视化的多平台数据生成方法、装置、设备及介质
US10789048B2 (en) * 2019-01-30 2020-09-29 Salesforce.Com, Inc. Namespace and class utilities for managed packages
CA3151767A1 (en) * 2019-09-27 2021-04-01 Srinath S. ABINAVAM Systems and methods for uniform, cross-platform transactions
KR20220030081A (ko) * 2020-09-02 2022-03-10 삼성전자주식회사 전자장치 및 그 제어방법
KR20220064780A (ko) * 2020-11-12 2022-05-19 삼성전자주식회사 전자 장치 및 이의 제어 방법
WO2022203387A1 (ko) * 2021-03-23 2022-09-29 (주)인스웨이브시스템즈 소스 컴파일러를 구비한 사용자 인터페이스 플랫폼 통합 개발 시스템 및 방법
WO2022203391A1 (ko) * 2021-03-23 2022-09-29 (주)인스웨이브시스템즈 반응형 또는 적응형 웹 구현을 위한 사용자 인터페이스 플랫폼 통합 개발 시스템 및 방법
WO2022203381A1 (ko) * 2021-03-23 2022-09-29 (주)인스웨이브시스템즈 단일 페이지 애플리케이션 방식의 사용자 인터페이스 플랫폼 통합 개발 시스템 및 방법
CN113204347B (zh) * 2021-04-02 2022-03-22 北京易捷思达科技发展有限公司 适用于软件包的处理方法、装置及电子设备
US11809376B2 (en) 2021-05-13 2023-11-07 International Business Machines Corporation Building a file system for multiple architectures
CN114225384B (zh) * 2021-12-02 2022-09-16 广州三七极创网络科技有限公司 基于可组合gm指令的通讯方法、系统、设备及存储介质
US11904870B2 (en) * 2021-12-27 2024-02-20 Gm Cruise Holdings Llc Configuration management system for autonomous vehicle software stack
CN117234470B (zh) * 2023-10-08 2024-02-23 开物数智(安徽)智能科技有限公司 一种基于低代码平台的跨端表单开发系统及方法

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002014821A (ja) * 2000-06-29 2002-01-18 Toshiba Corp サーバクライアントシステム及びこのサーバクライアントシステムにおけるアプリケーション配布方法を記憶した記憶媒体
JP2002202886A (ja) * 2000-10-27 2002-07-19 Toshiba Corp アプリケーション開発システム、その方法およびアプリケーション開発プログラムおよびアプリケーション生成方法
US20060036941A1 (en) * 2001-01-09 2006-02-16 Tim Neil System and method for developing an application for extending access to local software of a wireless device
US7096491B2 (en) * 2001-07-20 2006-08-22 Hewlett-Packard Development Company, L.P. Mobile code security architecture in an application service provider environment
US20030097457A1 (en) * 2001-08-08 2003-05-22 Amitabh Saran Scalable multiprocessor architecture for business computer platforms
US7305671B2 (en) * 2002-03-22 2007-12-04 Sun Microsystems, Inc. Conversion of an object model to a source file generation model
US7210121B2 (en) * 2003-02-07 2007-04-24 Sun Microsystems, Inc. Method and system for generating first class citizen application implementing native software application wrapper
US7587712B2 (en) * 2003-12-19 2009-09-08 Marvell International Ltd. End-to-end architecture for mobile client JIT processing on network infrastructure trusted servers
US20060129972A1 (en) * 2004-11-30 2006-06-15 Tyburski John C Application developer and method for generating platform independent code
US7810082B2 (en) * 2005-07-22 2010-10-05 Telefonaktiebolaget L M Ericsson (Publ) System and method for transforming generic software code into operator specific code
US20070250828A1 (en) * 2005-11-16 2007-10-25 Tseitlin Ariel D Portable libraries
US7890853B2 (en) * 2006-02-13 2011-02-15 Nextair Corporation Apparatus and machine-readable medium for generating markup language representing a derived entity which extends or overrides attributes of a base entity
US8027362B2 (en) 2006-03-01 2011-09-27 Symbol Technologies, Inc. Methods and systems for pushing and pulling network data in user interface design
US8117611B2 (en) * 2006-03-01 2012-02-14 International Business Machines Corporation Method, system, and program product for deploying a platform dependent application in a grid environment
JP2008250838A (ja) * 2007-03-30 2008-10-16 Kddi Corp ソフトウェア生成装置、方法、およびプログラム
US20090037287A1 (en) * 2007-07-31 2009-02-05 Ahmad Baitalmal Software Marketplace and Distribution System
WO2009078020A2 (en) * 2007-12-17 2009-06-25 Infogin Ltd. System and method for automatic creation of web content for mobile communicators
US20090172657A1 (en) * 2007-12-28 2009-07-02 Nokia, Inc. System, Method, Apparatus, Mobile Terminal and Computer Program Product for Providing Secure Mixed-Language Components to a System Dynamically
EP2245835A2 (en) * 2008-02-08 2010-11-03 Ecrio, Inc. System, method and apparatus for controlling multiple applications and services on a digital electronic device
US20090228862A1 (en) * 2008-03-04 2009-09-10 Anders Bertelrud Modularized integrated software development environments
US20090228868A1 (en) * 2008-03-04 2009-09-10 Max Drukman Batch configuration of multiple target devices
US8904368B2 (en) * 2008-03-31 2014-12-02 International Business Machines Corporation Instantiating a composite application for different target platforms
US8745573B2 (en) * 2008-06-16 2014-06-03 Beek Fund B.V. L.L.C. Platform-independent application development framework
US9110873B2 (en) * 2008-06-27 2015-08-18 Microsoft Technology Licensing, Llc Platform-independent data application description language
JP2011527465A (ja) * 2008-06-30 2011-10-27 モミニス リミテッド コンピュータアプリケーションの生成・配布方法
US8762963B2 (en) * 2008-12-04 2014-06-24 Beck Fund B.V. L.L.C. Translation of programming code
US8607224B2 (en) * 2009-05-28 2013-12-10 Yahoo! Inc. System for packaging native program extensions together with virtual machine applications
US20110078678A1 (en) * 2009-09-30 2011-03-31 Open Kernel Labs Methods and apparatus for producing cross-platform software applications
MX2012012015A (es) 2010-04-15 2013-06-05 Itr Group Inc Estructura de aplicacion de plataforma cruzada.

Also Published As

Publication number Publication date
EP2558921A4 (en) 2014-07-23
CA2796433C (en) 2017-12-12
JP5845522B2 (ja) 2016-01-20
CN102971688A (zh) 2013-03-13
AU2011239471A1 (en) 2012-11-08
US9218175B2 (en) 2015-12-22
US20140181802A1 (en) 2014-06-26
BR112012026301A2 (pt) 2016-07-12
WO2011130651A1 (en) 2011-10-20
KR101807897B1 (ko) 2017-12-11
CA2796433A1 (en) 2011-10-20
JP2013529328A (ja) 2013-07-18
US9665841B2 (en) 2017-05-30
CN102971688B (zh) 2016-03-16
US20110258595A1 (en) 2011-10-20
SG184864A1 (en) 2012-11-29
US8601449B2 (en) 2013-12-03
US20160110667A1 (en) 2016-04-21
KR20130086138A (ko) 2013-07-31
EP2558921A1 (en) 2013-02-20

Similar Documents

Publication Publication Date Title
US9665841B2 (en) Cross-platform application framework
Meier Professional Android 4 application development
US10194288B2 (en) Sticker distribution system for messaging apps
KR101503191B1 (ko) 애플리케이션 서비스 확장 장치 및 방법
EP4046000A1 (en) Methods and systems for integrated development environment editor support with a single code base
EP1686462A2 (en) Method and system for a digital device menu editor
CN109471626B (zh) 页面逻辑结构、页面生成方法、页面数据处理方法及装置
CN107589888B (zh) 信息处理方法和信息处理装置
Ostrander Android UI Fundamentals: Develop and Design
JP2012161076A (ja) 多機能装置に接続する大容量記憶装置にネットワークアクセスを可能にするシステム及び方法
Boyer et al. Android application development cookbook
McClure et al. Professional Android Programming with Mono for Android and. NET/C
CN106778270B (zh) 一种恶意应用程序的检测方法及系统
US20140304690A1 (en) Systems and Methods for Outputting an Application to Another Environment
US10579373B2 (en) Seamless extension porting
Jaygarl et al. Professional Tizen Application Development
KR20080027293A (ko) 데이터 언어에서 다수 언어들의 관리
WO2021084101A1 (en) Systems and methods for replacing a theme of a virtual environment
AFREEN Mobile Applications Development
TW201617832A (zh) 命令表面深入控制
CN110825417A (zh) 应用程序更新方法及系统
CN111290746A (zh) 对象访问方法、装置、设备及存储介质
CN108874476B (zh) 一种禁止广告展示的方法及系统
CN117785221A (zh) 一种应用程序安装方法及电子设备
CN117573138A (zh) 一种编译处理方法、装置、存储介质及电子设备

Legal Events

Date Code Title Description
FG Grant or registration