Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura...
Transcript of Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura...
![Page 1: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/1.jpg)
Aquiles BurlamaquiLuiz Eduardo
![Page 2: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/2.jpg)
Agenda• Motivação• Objetivo• História• Visão Geral• Arquitetura• Passo a Passo
![Page 3: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/3.jpg)
Motivação: • Socket
Desenvolvimento lento• RPC
Procedural Dependente de linguagem
• RMI O.O Dependente de Linguagem
• Suporte a diversas linguagens, possibilitando a comunicação entre módulos escritos em linguagens distintas
![Page 4: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/4.jpg)
Objetivo• Tornar fácil a implementação de aplicações
distribuídas• Para sistemas Orientado a Objetos e
procedurais• Independentes de:
plataforma sistema operacional linguagem de programação protocolo de comunicação
• Permitindo chamadas de procedimento remoto como se fossem locais
![Page 5: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/5.jpg)
História• 1991 - CORBA 1.0 – ORB• 1996 – CORBA 2.0 – Comunicação entre
ORBs• 2002 – CORBA 3.0
Interoperação outros sistemas distribuídos suporte de interação assíncrona entre objetos,
mobilidade de objetos interação com grupos de objetos interação em tempo real, etc.
![Page 6: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/6.jpg)
História• OMG
A arquitetura CORBA é desenvolvida pela OMG (Object Management Group). www.omg.org
A OMG foi fundada em 1989 por oito membros fundadores (3Com, American Airlines, Canon, Data General, HP, Philips, Sun e Unisys).
No ano 2000 tinha mais de 800 membros, incluindo IBM e Microsoft (apenas como observadora).
![Page 7: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/7.jpg)
CORBA - Common Object Request Broker Architecture,
Especificação que permite aos objetos de sistemas distribuídos comunicarem-se entre si de forma transparente
Componentes principais da OMA• Object Management Architecture
Objetos da aplicação Facilidades CORBA Serviços de Objeto ORB
![Page 8: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/8.jpg)
![Page 9: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/9.jpg)
Conceito de ORB (Object Request Broker)• componente que auxilia o cliente a invocar
um método em um objeto de forma transparente (transparência de acesso) localização do objeto ativação do objeto se necessário comunicar ao objeto sobre a requisição do
cliente
![Page 10: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/10.jpg)
Chamada através de um ORB
![Page 11: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/11.jpg)
Objetivo: possibilitar que clientes invoquem métodos a objetos remotos (objetos CORBA), e que ambos possam ser implementados em linguagens distintas
A linguagem de implementação do cliente não precisa ser necessariamente orientada a objetos
Funcionalidades• invocações estáticas
interface remota do objeto CORBA é conhecida em tempo de compilação (utilização dos stubs e skeletons)
• invocações dinâmicas interface remota do objeto CORBA não é conhecida em
tempo de compilação
![Page 12: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/12.jpg)
Estrutura de um ORB
![Page 13: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/13.jpg)
Semântica de invocação• semântica at-most-once (default)• semântica OneWay
métodos sem resultados ou callbacks, o cliente não bloqueia na espera de uma resposta
• Semântica at-most-once O cliente continua imediatamente e pode mais tarde
bloquear-se à espera da resposta Objeto CORBA: objeto remoto
• implementa uma interface IDL• possui uma referência de objeto remoto• capaz de responder a invocações aos métodos de sua
interface
![Page 14: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/14.jpg)
client server
proxy
or dynamic invocation
implementation repository object
adapter
ORBORB
skeleton
or dynamic skeleton
client program
interface repository
Request
Replycorecore for A
Servant A
![Page 15: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/15.jpg)
Adaptador de objeto (Object Adapter)• interliga os objetos CORBA e as classes do
servidor• cria as referências a objetos remotos para os
objetos CORBA• despacha cada RMI através de um skeleton
para o servidor apropriado• ativa objetos (se necessário)• CORBA 2.2: POA (Portable Object Adapter)
permite que aplicações e servidores sejam executados em ORBs produzidos por desenvolvedores diferentes
![Page 16: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/16.jpg)
Skeleton (servidor)• geradas na linguagem do servidor por um compilador
IDL• RMIs são despachadas através do skeleton apropriado
a um servidor• marshaling e unmarshaling
Stubs/proxies (cliente)• geradas na linguagem do cliente por um compilador
IDL• proxy (linguagens orientadas a objeto)• stub (linguagens procedurais)• marshaling e unmarshaling
![Page 17: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/17.jpg)
Repositório de implementação• ativa por demanda os servidores registrados, e
localiza os servidores em execução• armazena tabela com o mapeamento dos nomes dos
adaptadores de objetos para suas implementações• na ativação de objeto remoto, o hostname e o número
da porta no servidor são adicionados na tabela• possibilita armazenar outras informações sobre os
servidores (e.g. controle de acesso)• permite replicação
aumento de disponibilidade e tolerância a falhas
![Page 18: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/18.jpg)
Repositório de interface• provê informações sobre interfaces IDL
registradas (e.g. métodos, argumentos, exceções)
• cliente sem proxy de objeto pode obter informações necessárias (métodos e argumentos)
• necessário para invocações dinâmicas• nem todos os ORBs provêm um
repositório de interfaces
![Page 19: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/19.jpg)
Interface de invocação dinâmica• permite que clientes façam invocações
dinâmicas a objetos CORBA desconhecidos
• cliente obtém informações necessárias sobre um objeto CORBA a partir do repositório de interfaces, e utiliza esta informação para construir uma invocação e enviá-la ao servidor
![Page 20: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/20.jpg)
Passo para uma Inovação Dinâmica1. Identificar o objeto que queremos invocar
(provavelmente através do Trader Service do CORBAservices);
2. Recuperar sua interface (buscá-la no Repositório de Interfaces);
3. Construir a invocação; 4. Invocar a requisição, e receber os
resultados.
![Page 21: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/21.jpg)
Interface skeleton dinâmica• permite um objeto CORBA aceitar
invocações em uma interface sem skeleton interface não era conhecida em tempo de
compilação• skeleton dinâmico
recebe a invocação inspeciona o conteúdo da requisição para
descobrir o objeto destino, o método para ser invocado e os argumentos
invoca o destino
![Page 22: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/22.jpg)
![Page 23: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/23.jpg)
Facilidades para definir módulos, interfaces, tipos, atributos e métodos
sintaxe similar a C++ incluindo mais algumas palavras-chaves
Módulos IDL• permite agrupar interfaces e outros tipos IDL em
unidades lógicas• módulo define um nome de escopo (evita conflito
entre nomes) Interfaces IDL
• descrevem os métodos e atributos que são disponíveis por objetos CORBA que implementam a interface
![Page 24: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/24.jpg)
module HelloApp{ interface Hello { string sayHello(); oneway void shutdown(); };};
![Page 25: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/25.jpg)
class HelloImpl extends HelloPOA {private ORB orb;
public void setORB(ORB orb_val) {orb = orb_val; }
// implementação do método sayHello()public String sayHello() {return "\nHello world !!\n";}
// implementação do método shutdown()public void shutdown() {orb.shutdown(false);}}
![Page 26: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/26.jpg)
public class HelloServer {public static void main(String args[]) {try{// Criação e inicialização do ORBORB orb = ORB.init(args, null);// obtém a referência do rootpoa e ativa o POAManagerPOA rootpoa = POAHelper.narrow(orb.resolve_initial_references("RootPOA"));rootpoa.the_POAManager().activate();// cria o servant e registra com o ORBHelloImpl helloImpl = new HelloImpl();helloImpl.setORB(orb); // obtém referência do objeto servantorg.omg.CORBA.Object ref = rootpoa.servant_to_reference(helloImpl);Hello href = HelloHelper.narrow(ref);org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService");// Especifica o servidor de nomes(INS)NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);// Especifica uma referência de objetoString name = "Hello";NameComponent path[] = ncRef.to_name( name );ncRef.rebind(path, href);System.out.println("HelloServer ready and waiting ...");// Aguarda a invocação de clientesorb.run();} catch (Exception e) {System.err.println("ERROR: " + e);e.printStackTrace(System.out);}System.out.println("HelloServer Exiting ...");}}
![Page 27: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/27.jpg)
public class HelloClient {static Hello helloImpl;
public static void main(String args[]){
try{// Cria e inicializa o ORBORB orb = ORB.init(args, null);org.omg.CORBA.Object objRef =
orb.resolve_initial_references("NameService");NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);
String name = "Hello";helloImpl = HelloHelper.narrow(ncRef.resolve_str(name));
System.out.println("Obtained a handle on server object: " + helloImpl);
System.out.println(helloImpl.sayHello());helloImpl.shutdown();
} catch (Exception e) {System.out.println("ERROR : " + e) ;e.printStackTrace(System.out);
}}
}
![Page 28: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/28.jpg)
}
● idlj -fall -Hello.idl●Javac *.java● orbd -ORBInitialPort 1050 -ORBInitialHost localhost &● java HelloServer -ORBInitialPort 1050 -ORBInitialHost localhost&● java HelloClient -ORBInitialPort 1050 -ORBInitialHost localhost
![Page 29: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/29.jpg)
Transparência de localização• Tratamento igual para Função local
Deficiências de projeto e processo Problemas com implementações Firewalls
![Page 30: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/30.jpg)
1) Construir um exemplos simples onde programas se comuniquem usando CORBA• Nível 1: Mesma linguagem• Nível 2: Entre Java e C++
http://openorb.sourceforge.net/• Nível 3: Entre Java/C++ e Lua
(OiL - http://oil.luaforge.net/index.html).• Com base na experiência adquirida fazer um
relato do uso de CORBA com as linguagens utilizadas.
• Entrega dos códigos fontes
![Page 31: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/31.jpg)
Uma linguagem de script leve• Pequena, portátil, eficiente
Uma linguagem tipada dinamicamente• O tipo da variável depende do valor armazenado• Toda linguagem pode ter erro de “tipos” em
tempo de execução Uma linguagem com gerência automática de
memória Pré-compilação em bytecodes
• Pode-se carregar arquivos compilados
![Page 32: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/32.jpg)
Sintaxe convencional print(“hello world”) print“hello world”
![Page 33: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/33.jpg)
Comentários de 1 linha -- (dois traços)
Comentários de blocos --[[ bloco ]]
![Page 34: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/34.jpg)
Varáveis globais não precisam de declaração
Variáveis locais são declaradas com a palavra chave local
![Page 35: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/35.jpg)
8 tipos básicos• nil – tipo do valor nil que é diferente de qualquer outro, é o
valor default das variáveis• boolean – true, false• number – double• string – array de caracteres, imutável• function – valor de primeira classe, significa que funções
podem ser armazenadas em variáveis, passadas como argumentos, retornadas
• userdata – dados C arbitrários, manipulado através da API C
• thread – threads independentes de execução• table – arrays associativos
Consulta do tipo da variável através da função type
![Page 36: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/36.jpg)
Aritméticos +, -, *, /, ^
Relacionais <, >, <=, >=, ==, ~=
Operadores lógicos and, or, not Avaliação por curto-circuito
Concatenação ..
![Page 37: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/37.jpg)
a = 0 a, b, c = 0, 0, 0 a, b = b, a -- troca de valores a, b, c = 0, 0 -- c recebe nil
![Page 38: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/38.jpg)
Resultado da expressão {} Qualquer valor como chave, exceto
nil Único mecanismo de estruturação de
dados Indexação na forma variável[índice]
ou variável.índice, quando o índice é uma string
![Page 39: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/39.jpg)
for var = inicio, fim [, passo] do bloco end Numérico
for var {, var} in expressão do bloco end Genérico
while expressão do bloco end repeat block until expressão break ou return pode ser usado para
terminar o laço if expressão then bloco {elseif expressão
then bloco} [else bloco] end
![Page 40: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/40.jpg)
Retorno• foo()
Nenhum valor de retorno• x = foo()
Ajustado para 1 valor• x, y = foo()
Ajustado para 2 valores• {foo()}
Cria uma tabela com todos os valores retornados
![Page 41: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/41.jpg)
Basic String Table Math IO OS
![Page 42: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/42.jpg)
Oferecem funções básicas• print• type• setmetatable• pairs• error
![Page 43: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/43.jpg)
Funções para manipulação de strings
![Page 44: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/44.jpg)
Funções para manipulação de tabelas• table.insert• table.remove• table.sort
![Page 45: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/45.jpg)
Funções matemáticas• math.sqrt• math.sin• math.log
![Page 46: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/46.jpg)
Funções de entrada e saída• io.open• io.close• io.read• io.write
![Page 47: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/47.jpg)
Funções associadas ao sistema operacional• os.clock• os.date• os.execute
![Page 48: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/48.jpg)
Manual Wiki Lua-Users Lista de Discussão IRC
![Page 49: Aquiles Burlamaqui Luiz Eduardo. Agenda Motivação Objetivo História Visão Geral Arquitetura Passo a Passo.](https://reader034.fdocumentos.com/reader034/viewer/2022042714/552fc0f8497959413d8b5a14/html5/thumbnails/49.jpg)
http://www.corba.hpg.com.br/home2.html
http://www.das.ufsc.br/~montez/corba/corba.html
http://java.sun.com/j2se/1.4.2/docs/guide/idl/orbd.html