Essa eu puxei do fundo do baú. Achei essa apresentação que tinha feito em 2002. Na época eu trabalhava no maior case do mundo usando EJB, usando o servidor da Borland. É uma crítica feroz e detalhada, apresentando alternativas.
Este documento apresenta uma aula sobre Java Enterprise Edition (Java EE). O professor discute os principais tópicos da aula, incluindo uma visão geral da plataforma Java EE, componentes, arquitetura de aplicações Java EE e servidores de suporte. Alternativas de desenvolvimento web como .NET e Django também são comparadas.
O documento discute os conceitos de J2EE e EJB 3.0. Especificamente, descreve o que é J2EE, suas características e o que é EJB, seus tipos de componentes (session bean, entity bean e message-driven bean), interfaces e como implementar um bean.
O documento discute três itens relevantes sobre EJB: 1) o uso de anotações para adicionar metadados às classes e métodos; 2) a utilização mínima de descritores XML; 3) a injeção de dependência, onde objetos necessários são injetados no código ao invés de serem localizados manualmente.
O documento discute o desenvolvimento de aplicações web ricas (RIA) com Java. Apresenta os antecedentes históricos desde os anos 1970 até o surgimento da web, experiências iniciais com Applets Java e frameworks como DWR e JQuery, e perspectivas atuais com foco em frameworks como Google Web Toolkit e Vaadin que permitem programação das interfaces em Java.
O documento discute Enterprise JavaBeans (EJB), que fornece serviços como transações, segurança e persistência para componentes em aplicações corporativas. EJB pode ser visto como um modelo de componentes ou framework. Componentes EJB, como session beans e entity beans, são executados em um contêiner EJB que oferece tais serviços de infraestrutura.
O documento apresenta um mini-curso gratuito sobre Enterprise Java Beans (EJB) 3.0. A agenda inclui tópicos como a plataforma Java EE, conceitos iniciais de EJB, session beans, message-driven beans, Java Persistence API e serviços disponíveis como injeção de dependência e transações. O curso será ministrado por um palestrante com 8 anos de experiência na área de desenvolvimento Java.
Este documento fornece um resumo introdutório sobre Enterprise JavaBeans 3.0, incluindo sessão beans, message-driven beans, transações e interceptadores. O programa abrange esses tópicos além de web services. O objetivo é fornecer uma introdução prática a EJB 3.0 com demonstrações.
Este documento apresenta uma aula sobre Java Enterprise Edition (Java EE). O professor discute os principais tópicos da aula, incluindo uma visão geral da plataforma Java EE, componentes, arquitetura de aplicações Java EE e servidores de suporte. Alternativas de desenvolvimento web como .NET e Django também são comparadas.
O documento discute os conceitos de J2EE e EJB 3.0. Especificamente, descreve o que é J2EE, suas características e o que é EJB, seus tipos de componentes (session bean, entity bean e message-driven bean), interfaces e como implementar um bean.
O documento discute três itens relevantes sobre EJB: 1) o uso de anotações para adicionar metadados às classes e métodos; 2) a utilização mínima de descritores XML; 3) a injeção de dependência, onde objetos necessários são injetados no código ao invés de serem localizados manualmente.
O documento discute o desenvolvimento de aplicações web ricas (RIA) com Java. Apresenta os antecedentes históricos desde os anos 1970 até o surgimento da web, experiências iniciais com Applets Java e frameworks como DWR e JQuery, e perspectivas atuais com foco em frameworks como Google Web Toolkit e Vaadin que permitem programação das interfaces em Java.
O documento discute Enterprise JavaBeans (EJB), que fornece serviços como transações, segurança e persistência para componentes em aplicações corporativas. EJB pode ser visto como um modelo de componentes ou framework. Componentes EJB, como session beans e entity beans, são executados em um contêiner EJB que oferece tais serviços de infraestrutura.
O documento apresenta um mini-curso gratuito sobre Enterprise Java Beans (EJB) 3.0. A agenda inclui tópicos como a plataforma Java EE, conceitos iniciais de EJB, session beans, message-driven beans, Java Persistence API e serviços disponíveis como injeção de dependência e transações. O curso será ministrado por um palestrante com 8 anos de experiência na área de desenvolvimento Java.
Este documento fornece um resumo introdutório sobre Enterprise JavaBeans 3.0, incluindo sessão beans, message-driven beans, transações e interceptadores. O programa abrange esses tópicos além de web services. O objetivo é fornecer uma introdução prática a EJB 3.0 com demonstrações.
Assuntos aleatorios que podem mudar sua vidaLuiz Borba
O documento discute assuntos aleatórios que podem mudar a vida de uma pessoa, como conexão, inovação, audiência, informação e produtividade. Também aborda os modelos de negócios de grandes empresas de tecnologia e a importância de investir continuamente no próprio conhecimento de forma diversificada.
Luiz Borba lista 14 coisas que levou tempo para aprender ao longo de sua carreira, que inclui passagens como estudante, programador, empreendedor, analista de tecnologia, líder técnico e consultor. Algumas lições incluem não ser especialista em uma coisa só, ter cuidado com arrogância e filhos da puta, e tomar decisões como se estivesse jogando poker.
O documento resume a trajetória profissional de Luiz Borba desde 1989 até hoje, passando por diferentes papéis como estudante, programador, empreendedor, analista de tecnologia, líder técnico, arquiteto de software, scrum master e consultor. Apresenta também breves considerações sobre linguagens de programação, programação funcional versus orientada a objetos, e introduz a linguagem Rust destacando suas características de segurança e desempenho.
The document discusses the future and how it has become more complex over time. It argues that the key to the future is simplifying complexity and presents examples of technological advances from the past century. Several quotes are provided that emphasize inventing the future rather than just predicting it, and that change is how the future impacts the present. The conclusion is that to shape the future, one must simplify the world, read signs, experiment with change, and be willing to change oneself.
Todas as coisas que todo programador não pode deixar de saberLuiz Borba
O documento discute tópicos importantes para programadores como desenvolver software, responsabilidade, conhecimento sobre o trabalho, entropia de software, código duplicado, resolução de bugs, agilidade, priorização, escopo mínimo, desenvolvimento iterativo e incremental, refactoring e teste dirigido por testes. Recomenda livros e técnicas para que programadores estudem.
O documento discute os principais conceitos do Ciclo de Vida de Desenvolvimento de Software, incluindo:
1. A importância da Visão e Objetivos do projeto para orientar o time.
2. Exemplos de como problemas podem surgir quando os requisitos não são claros ou a tecnologia é desconhecida.
3. A necessidade de evoluir os sistemas incrementalmente através de iterações e deployes frequentes para lidar com mudanças e imprevistos.
Preparei essa aula sobre Arquitetura de Software para a turma de engenharia de software na pós-graduação da UFPE. Minha intenção foi fugir do óbvio e mostrar uma nova visão sobre arquitetura, fortemente influenciada pelas metodologias ágeis e pela evolução das tecnologias web. Este trabalho é marcante porque contém pela primeira vez os enunciados das primeira e segunda lei de Arquitetura de Software de Borba :)))))))
O documento discute porque erros acontecem em programas de computador e como lidar com eles. Apresenta várias causas comuns de erros como má arquitetura de software, uso inadequado de abstrações e falta de atualização de sistemas. Também dá dicas sobre como prevenir e resolver erros, como testes automatizados, deploy frequente e monitoramento. Conclui enfatizando a importância do trabalho de desenvolvedor para evitar problemas.
Como todo mundo já percebeu, Scrum virou moda. A maioria das empresas dizem que usam Scrum, porém poucas são REALMENTE ágeis. A principal razão pela qual isso acontece é porque as pessoas dessas empresas ainda não assimilaram os príncipios que estão por trás dos métodos ágeis. O entendimento e a adoção desses príncipios são fundamentais para ter sucesso com Scrum. Acredito que esse fenômeno aconteceu de forma similar com a adoção do RUP.
O documento discute métricas e fatores que afetam a produtividade em projetos de software. Algumas métricas propostas incluem esforço por ponto de função, bugs por mil linhas de código e pacotes reusados em comparação ao total. Fatores como processo, tamanho, qualidade e reuso podem impactar a produtividade. Métricas devem ser específicas para cada organização e o foco é em simplicidade e melhoria contínua.
A apresentação visa repensar os padrões JavaEE para evitar o uso de padrões obsoletos, focando no container server-side, para criar arquiteturas enxutas.
O documento discute os benefícios da arquitetura de banco de dados replicada para aplicações corporativas em múltiplos sites. Apresenta conceitos de replicação e classifica softwares replicadores. Discute como evitar inconsistências na replicação assíncrona multi-master e fornece dicas de modelagem de dados. Apresenta dois casos práticos de replicação usando o software Object MMRS.
JBoss Fuse Service Works - O Fuse além da integração - PT-BRElvis Rocha
O documento discute arquiteturas de integração e serviços orientados a arquitetura. Apresenta o Red Hat JBoss Fuse e Red Hat JBoss Fuse Service Works como soluções para integrar sistemas e implementar SOA, respectivamente. O Fuse oferece funcionalidades básicas de ESB, enquanto o Service Works adiciona governança, orquestração e outros recursos.
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...Daniel Destro Do Carmo
A plataforma Java revolucionou o panorama do desenvolvimento com a sua comunidade ativa, de onde originaram muitos projetos e iniciativas de soluções open source. Diversas soluções nasceram e são utilizadas com frequência, mas podem apresentar problemas comuns se não tomarmos o devido cuidado. Será apresentada uma abordagem de como utilizar software livre, como os populares Spring, Hibernate, Netty e Jetty com clusterização e virtualização, em uma arquitetura focada em um sistema crítico (24x7) de alta disponibilidade que atende milhares de dezenas de solicitações diariamente, no mercado de 300 mil cientes e 430 mil usuários do SPC. Veremos problemas enfrentados e as medidas tomadas em situações diversas, debatendo detalhes técnicos e gargalos comuns que podem aparecer.
Palestra polêmica sobre o futuro da plataforma Java, com ênfase em novas linguagens para a JVM. Apresentada no Maratona4Java de Brasília.
http://blog.fragmental.com.br/wiki/index.php/Maratona4Java2005:_Alem_do_Java%E2%84%A2:_Novos_Horizontes_para_o_Desenvolvedor
Desenvolvimento em .Net - Introducao A FrameworkVitor Silva
O documento discute o desenvolvimento em .Net, comparando-o com Java e abordando tópicos como: as forças externas que levam à mudança de plataformas, as semelhanças e diferenças entre C# e VB.Net, a execução de aplicações .Net, ambientes de desenvolvimento .Net e ferramentas básicas de depuração.
Google AppEngine: Desafios da adoção de cloud no mercado de segurosGustavo Concon
Palestra sobre case apresentado no QConSP 2013, com uma diversidade de produtos da plataforma Google e como endereçamos requisitos tradicionais de Enterprise Apps na plataforma.
O documento descreve a implementação de Java pela empresa PROCEMPA para desenvolver sistemas para o setor público de forma produtiva, flexível e de baixo custo. A empresa criou um framework com arquitetura padronizada usando Java, Hibernate, Struts e taglibs customizadas para aumentar a produtividade. O framework possibilitou o desenvolvimento de 19 projetos em 1,5 anos e continua em evolução para atender as necessidades do setor público.
Vantagens e desvantagens de uma arquitetura microservicesFábio Rosato
Este documento discute as vantagens e desvantagens de uma arquitetura de microserviços. As principais vantagens incluem a capacidade de implantar serviços independentemente, permitindo entregas contínuas mais rápidas. As principais desvantagens incluem a complexidade operacional adicional e a consistência eventual de dados entre serviços. O documento fornece dicas para lidar com desafios como integração, diversidade tecnológica e segurança.
Venha conhecer as principais tecnologias disponibilizadas para o desenvolvimento de aplicações Web utilizando a plataforma Java Enterprise.
Neste mini-curso serão demonstrados conceitos e exemplos das bibliotecas para o desenvolvimento Java EE, como: JSF, JPA, CDI EJB, JAX-RS, dentre outras.
Assuntos aleatorios que podem mudar sua vidaLuiz Borba
O documento discute assuntos aleatórios que podem mudar a vida de uma pessoa, como conexão, inovação, audiência, informação e produtividade. Também aborda os modelos de negócios de grandes empresas de tecnologia e a importância de investir continuamente no próprio conhecimento de forma diversificada.
Luiz Borba lista 14 coisas que levou tempo para aprender ao longo de sua carreira, que inclui passagens como estudante, programador, empreendedor, analista de tecnologia, líder técnico e consultor. Algumas lições incluem não ser especialista em uma coisa só, ter cuidado com arrogância e filhos da puta, e tomar decisões como se estivesse jogando poker.
O documento resume a trajetória profissional de Luiz Borba desde 1989 até hoje, passando por diferentes papéis como estudante, programador, empreendedor, analista de tecnologia, líder técnico, arquiteto de software, scrum master e consultor. Apresenta também breves considerações sobre linguagens de programação, programação funcional versus orientada a objetos, e introduz a linguagem Rust destacando suas características de segurança e desempenho.
The document discusses the future and how it has become more complex over time. It argues that the key to the future is simplifying complexity and presents examples of technological advances from the past century. Several quotes are provided that emphasize inventing the future rather than just predicting it, and that change is how the future impacts the present. The conclusion is that to shape the future, one must simplify the world, read signs, experiment with change, and be willing to change oneself.
Todas as coisas que todo programador não pode deixar de saberLuiz Borba
O documento discute tópicos importantes para programadores como desenvolver software, responsabilidade, conhecimento sobre o trabalho, entropia de software, código duplicado, resolução de bugs, agilidade, priorização, escopo mínimo, desenvolvimento iterativo e incremental, refactoring e teste dirigido por testes. Recomenda livros e técnicas para que programadores estudem.
O documento discute os principais conceitos do Ciclo de Vida de Desenvolvimento de Software, incluindo:
1. A importância da Visão e Objetivos do projeto para orientar o time.
2. Exemplos de como problemas podem surgir quando os requisitos não são claros ou a tecnologia é desconhecida.
3. A necessidade de evoluir os sistemas incrementalmente através de iterações e deployes frequentes para lidar com mudanças e imprevistos.
Preparei essa aula sobre Arquitetura de Software para a turma de engenharia de software na pós-graduação da UFPE. Minha intenção foi fugir do óbvio e mostrar uma nova visão sobre arquitetura, fortemente influenciada pelas metodologias ágeis e pela evolução das tecnologias web. Este trabalho é marcante porque contém pela primeira vez os enunciados das primeira e segunda lei de Arquitetura de Software de Borba :)))))))
O documento discute porque erros acontecem em programas de computador e como lidar com eles. Apresenta várias causas comuns de erros como má arquitetura de software, uso inadequado de abstrações e falta de atualização de sistemas. Também dá dicas sobre como prevenir e resolver erros, como testes automatizados, deploy frequente e monitoramento. Conclui enfatizando a importância do trabalho de desenvolvedor para evitar problemas.
Como todo mundo já percebeu, Scrum virou moda. A maioria das empresas dizem que usam Scrum, porém poucas são REALMENTE ágeis. A principal razão pela qual isso acontece é porque as pessoas dessas empresas ainda não assimilaram os príncipios que estão por trás dos métodos ágeis. O entendimento e a adoção desses príncipios são fundamentais para ter sucesso com Scrum. Acredito que esse fenômeno aconteceu de forma similar com a adoção do RUP.
O documento discute métricas e fatores que afetam a produtividade em projetos de software. Algumas métricas propostas incluem esforço por ponto de função, bugs por mil linhas de código e pacotes reusados em comparação ao total. Fatores como processo, tamanho, qualidade e reuso podem impactar a produtividade. Métricas devem ser específicas para cada organização e o foco é em simplicidade e melhoria contínua.
A apresentação visa repensar os padrões JavaEE para evitar o uso de padrões obsoletos, focando no container server-side, para criar arquiteturas enxutas.
O documento discute os benefícios da arquitetura de banco de dados replicada para aplicações corporativas em múltiplos sites. Apresenta conceitos de replicação e classifica softwares replicadores. Discute como evitar inconsistências na replicação assíncrona multi-master e fornece dicas de modelagem de dados. Apresenta dois casos práticos de replicação usando o software Object MMRS.
JBoss Fuse Service Works - O Fuse além da integração - PT-BRElvis Rocha
O documento discute arquiteturas de integração e serviços orientados a arquitetura. Apresenta o Red Hat JBoss Fuse e Red Hat JBoss Fuse Service Works como soluções para integrar sistemas e implementar SOA, respectivamente. O Fuse oferece funcionalidades básicas de ESB, enquanto o Service Works adiciona governança, orquestração e outros recursos.
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...Daniel Destro Do Carmo
A plataforma Java revolucionou o panorama do desenvolvimento com a sua comunidade ativa, de onde originaram muitos projetos e iniciativas de soluções open source. Diversas soluções nasceram e são utilizadas com frequência, mas podem apresentar problemas comuns se não tomarmos o devido cuidado. Será apresentada uma abordagem de como utilizar software livre, como os populares Spring, Hibernate, Netty e Jetty com clusterização e virtualização, em uma arquitetura focada em um sistema crítico (24x7) de alta disponibilidade que atende milhares de dezenas de solicitações diariamente, no mercado de 300 mil cientes e 430 mil usuários do SPC. Veremos problemas enfrentados e as medidas tomadas em situações diversas, debatendo detalhes técnicos e gargalos comuns que podem aparecer.
Palestra polêmica sobre o futuro da plataforma Java, com ênfase em novas linguagens para a JVM. Apresentada no Maratona4Java de Brasília.
http://blog.fragmental.com.br/wiki/index.php/Maratona4Java2005:_Alem_do_Java%E2%84%A2:_Novos_Horizontes_para_o_Desenvolvedor
Desenvolvimento em .Net - Introducao A FrameworkVitor Silva
O documento discute o desenvolvimento em .Net, comparando-o com Java e abordando tópicos como: as forças externas que levam à mudança de plataformas, as semelhanças e diferenças entre C# e VB.Net, a execução de aplicações .Net, ambientes de desenvolvimento .Net e ferramentas básicas de depuração.
Google AppEngine: Desafios da adoção de cloud no mercado de segurosGustavo Concon
Palestra sobre case apresentado no QConSP 2013, com uma diversidade de produtos da plataforma Google e como endereçamos requisitos tradicionais de Enterprise Apps na plataforma.
O documento descreve a implementação de Java pela empresa PROCEMPA para desenvolver sistemas para o setor público de forma produtiva, flexível e de baixo custo. A empresa criou um framework com arquitetura padronizada usando Java, Hibernate, Struts e taglibs customizadas para aumentar a produtividade. O framework possibilitou o desenvolvimento de 19 projetos em 1,5 anos e continua em evolução para atender as necessidades do setor público.
Vantagens e desvantagens de uma arquitetura microservicesFábio Rosato
Este documento discute as vantagens e desvantagens de uma arquitetura de microserviços. As principais vantagens incluem a capacidade de implantar serviços independentemente, permitindo entregas contínuas mais rápidas. As principais desvantagens incluem a complexidade operacional adicional e a consistência eventual de dados entre serviços. O documento fornece dicas para lidar com desafios como integração, diversidade tecnológica e segurança.
Venha conhecer as principais tecnologias disponibilizadas para o desenvolvimento de aplicações Web utilizando a plataforma Java Enterprise.
Neste mini-curso serão demonstrados conceitos e exemplos das bibliotecas para o desenvolvimento Java EE, como: JSF, JPA, CDI EJB, JAX-RS, dentre outras.
[1] O documento discute o desenvolvimento web com JavaServer Faces (JSF), um framework MVC para construção de interfaces web com componentes.
[2] JSF fornece uma especificação e APIs para representar componentes de interface, manipular eventos e validação de entrada do usuário, e controlar a navegação entre páginas.
[3] O documento explica conceitos-chave de JSF como componentes, renderers, managed beans, converters, validadores e o ciclo de vida das requisições, demonstrando porque JSF é uma boa opção para
Interoperabilidade entre bancos de dadospichiliani
Este documento discute a interoperabilidade entre bancos de dados de diferentes fornecedores. Ele explica que cenários multi-banco são comuns e discute conceitos comuns entre bancos de dados. Também aborda como trocar objetos, dados e instruções entre bancos de dados heterogêneos, incluindo recursos de replicação e ferramentas para conversão de SQL.
Interoperabilidade entre bancos de dadospichiliani
O documento discute a interoperabilidade entre bancos de dados de diferentes fornecedores. Ele explica que ambientes multi-banco são comuns e discute conceitos comuns e desafios de interoperabilidade na administração e troca de dados entre bancos. O documento também analisa ferramentas e técnicas para replicação heterogênea e conversão de instruções SQL entre bancos de dados.
O documento discute o framework Ruby on Rails, incluindo sua história, conceitos, como funciona e vantagens em relação a outras tecnologias. É destacado que Rails permite desenvolver aplicações web de forma mais rápida e com menos código através da convenção sobre configuração. Exemplos reais demonstram a produtividade proporcionada pelo framework.
O documento discute redes de computadores, sistemas distribuídos e padrões como RMI, CORBA e SOA. Ele explica como RMI permite a execução remota de métodos em Java, como CORBA fornece interoperabilidade multiplataforma através de interfaces IDL e como SOA promove a exposição de recursos como serviços web.
Docker SP - Orquestrando docker via Marathon e Mesos na KonkerAndré Rocha
O documento discute a experiência da empresa Konker em orquestrar containers Docker usando Mesos e Marathon, sem usar DC/OS. Eles enfrentaram desafios técnicos em sua arquitetura inicial e migraram para microsserviços e containers para melhorar a disponibilidade, escalabilidade e desempenho. Algumas decisões como Mesos e Marathon funcionaram bem, enquanto outras como falta de gestão de segredos e ferramentas oficiais do DC/OS apresentaram problemas.
O documento discute programação reativa e serverless no Azure. Na primeira parte, fornece contexto histórico sobre a evolução dos sistemas e mudanças nos paradigmas de programação. A segunda parte explica conceitos de programação reativa e como ela se relaciona com programação funcional. A terceira parte introduz o tópico de serverless e discute seu espectro de uso na nuvem.
Este documento apresenta as técnicas de programação para a web, incluindo conceitos gerais sobre aplicações web, criação de páginas usando HTML, CSS e JavaScript, e o uso de servlets e JSP para criar aplicações web dinâmicas usando o modelo MVC.
O documento discute a evolução das ferramentas de análise de dados, desde os mainframes centralizados até os sistemas distribuídos modernos como MapReduce e além. Também questiona quais serão os próximos passos nessa evolução, sugerindo que poderá haver ainda mais paralelismo em cada nó da rede.
Dias do futuro presente da programaçãoLuiz Borba
Que linguagens de programação vamos usar daqui a 15 anos? Como será o futuro da programação? Nesta palestra, faço uma reflexão sobre a evolução da programação, avaliando as tendências atuais. Minha ideia é que o futuro já está presente hoje. Das 25 linguagens mais populares hoje em dia, apenas 1 não existia em 2001. A maior chance é que as linguagens do futuro já existam hoje. Sendo assim, quais são essas linguagens? Que características elas tem em comum? Em quais devemos investir?
It's the end of design patterns as we know it (and i feel fine)Luiz Borba
The Design Patterns Book, released in 1994 is even today very influential in how we designed our apps. However, I think the influence is about to end In the last 20 years the mainstream programming languages are object oriented and imperative and right now, they are oo, imperative and functional. The functional paradigm suggest different patterns for the problems stated in the book. In the second part of presentation, I try to explain Monads, as an example of a functional pattern.
O documento discute como pessoas e coisas mudam ao longo do tempo, incluindo tecnologias, percepções e empresas. O autor argumenta que soluções definidas estão erradas e precisam ser atualizadas regularmente à medida que o mundo muda.
This document summarizes Luiz Borba's observations and reflections from attending the 2013 Build conference hosted by Microsoft. The conference had over 6,000 attendees and included keynote presentations, 14 simultaneous sessions, and demonstrations of new features in Windows 8.1 like refined multitasking capabilities and integration with Bing services. Borba also discusses sessions on tools for app development like Visual Studio 2013 and the Windows Performance Toolkit. He notes Microsoft's commitment to open source and rapid release cycles. In conclusion, he reflects on issues like lack of interest in Windows Phone sessions and problems addressed in Windows 8.1 that seemed obvious.
Windows 8 introduces a new interface designed around touch and tablets called Metro that utilizes full screen apps, live tiles, and gestures. It allows apps to be developed once and run across all screen sizes and devices. The new app platform and integration with services like SkyDrive create an opportunity for developers as people upgrade to Windows 8 on a wide variety of devices.
The document summarizes the evolution of startup tools and methodologies over time. It describes four main eras: the Golden Age from 1970-1995 where startups required millions to start and had long development cycles; the dot-com bubble of 1995-2000 where the goal was to quickly flip businesses; Lean Startups from 2001-2010 where startups could launch with under $500k and use agile development and customer feedback; and the current era from 2010-present where businesses aim to rapidly acquire millions of customers and pursue acquisitions or IPOs. The document also outlines Lean Startup principles like the build-measure-learn loop and minimum viable products which aim to minimize time to validated learning about customers.
This document discusses the evolution of startups over time. It outlines four eras: the Golden Age (1970-1995), the Dot-com Bubble (1995-2000), Back to Basics (2000-2010), and the New Bubble (2010-present). It then discusses concepts like the customer development process, agile development, the minimum viable product, and lean startup methodology. The lean startup approach emphasizes building an MVP, measuring metrics through experiments and customer feedback, and pivoting or changing directions quickly based on learning.
O documento discute TDD (Test Driven Development), incluindo o que é TDD, como começar a usar TDD em um projeto, lições aprendidas e a evolução de TDD ao longo do tempo. O autor também aborda desafios comuns como resistência à mudança e a importância de TDD para a melhoria da qualidade do código.
O documento discute os benefícios e desafios do Test Driven Development (TDD). Apresenta como começar a usar TDD na programação, como treinar equipes, e como melhorar a qualidade e produtividade do código através de testes automatizados. Conclui que TDD requer uma mudança cultural para escrever testes primeiro e manter um código limpo e fácil de testar.
As classes de modelagem podem ser comparadas a moldes ou
formas que definem as características e os comportamentos dos
objetos criados a partir delas. Vale traçar um paralelo com o projeto de
um automóvel. Os engenheiros definem as medidas, a quantidade de
portas, a potência do motor, a localização do estepe, dentre outras
descrições necessárias para a fabricação de um veículo
Em um mundo cada vez mais digital, a segurança da informação tornou-se essencial para proteger dados pessoais e empresariais contra ameaças cibernéticas. Nesta apresentação, abordaremos os principais conceitos e práticas de segurança digital, incluindo o reconhecimento de ameaças comuns, como malware e phishing, e a implementação de medidas de proteção e mitigação para vazamento de senhas.
A linguagem C# aproveita conceitos de muitas outras linguagens,
mas especialmente de C++ e Java. Sua sintaxe é relativamente fácil, o que
diminui o tempo de aprendizado. Todos os programas desenvolvidos devem
ser compilados, gerando um arquivo com a extensão DLL ou EXE. Isso torna a
execução dos programas mais rápida se comparados com as linguagens de
script (VBScript , JavaScript) que atualmente utilizamos na internet
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...Faga1939
Este artigo tem por objetivo apresentar como ocorreu a evolução do consumo e da produção de energia desde a pré-história até os tempos atuais, bem como propor o futuro da energia requerido para o mundo. Da pré-história até o século XVIII predominou o uso de fontes renováveis de energia como a madeira, o vento e a energia hidráulica. Do século XVIII até a era contemporânea, os combustíveis fósseis predominaram com o carvão e o petróleo, mas seu uso chegará ao fim provavelmente a partir do século XXI para evitar a mudança climática catastrófica global resultante de sua utilização ao emitir gases do efeito estufa responsáveis pelo aquecimento global. Com o fim da era dos combustíveis fósseis virá a era das fontes renováveis de energia quando prevalecerá a utilização da energia hidrelétrica, energia solar, energia eólica, energia das marés, energia das ondas, energia geotérmica, energia da biomassa e energia do hidrogênio. Não existem dúvidas de que as atividades humanas sobre a Terra provocam alterações no meio ambiente em que vivemos. Muitos destes impactos ambientais são provenientes da geração, manuseio e uso da energia com o uso de combustíveis fósseis. A principal razão para a existência desses impactos ambientais reside no fato de que o consumo mundial de energia primária proveniente de fontes não renováveis (petróleo, carvão, gás natural e nuclear) corresponde a aproximadamente 88% do total, cabendo apenas 12% às fontes renováveis. Independentemente das várias soluções que venham a ser adotadas para eliminar ou mitigar as causas do efeito estufa, a mais importante ação é, sem dúvidas, a adoção de medidas que contribuam para a eliminação ou redução do consumo de combustíveis fósseis na produção de energia, bem como para seu uso mais eficiente nos transportes, na indústria, na agropecuária e nas cidades (residências e comércio), haja vista que o uso e a produção de energia são responsáveis por 57% dos gases de estufa emitidos pela atividade humana. Neste sentido, é imprescindível a implantação de um sistema de energia sustentável no mundo. Em um sistema de energia sustentável, a matriz energética mundial só deveria contar com fontes de energia limpa e renováveis (hidroelétrica, solar, eólica, hidrogênio, geotérmica, das marés, das ondas e biomassa), não devendo contar, portanto, com o uso dos combustíveis fósseis (petróleo, carvão e gás natural).
3. Problemas com EJB
❑ Problemas de produtividade
❑ Custo de desenvolvimento
❑ Custo total para o cliente
❑ Problemas de portabilidade
❑ Problemas de performance
❑ Restrições do EJB
4. Problemas de produtividade
❑ Para testes unitários, tem que “levantar” um EJB
Container
❑ Tempo de compilação excessivo (geração de stubs
e skeletons)
❑ Debug remoto é mais lento
❑ Ferramentas são mais complexas e pesadas
❑ Ferramentas ainda são pouco maduras e
apresentam diversos problemas (redeploy do BAS e
no BES)
❑ Ainda pouca experiência com desenvolvimento de
aplicações distribuidas
5. Problemas de produtividade
❑ Mapeamento CMP
– Não tem herança e pelo jeito, não vai ter nunca
– Não mapeia relacionamentos (no EJB2 criaram o
CMR, mas, tem limitações)
❑ Caso SISREG
– Temos sempre que implementar na mão herança e
relacionamentos, complicando o uso dos Beans
6. Custo de desenvolvimento
❑ Equipamento mais caro
– Para rodar o container + ferramenta de
desenvolvimento é preciso uma boa máquina
– Cesar teve que fazer um upgrade de memória
(256Mb para 768Mb)
❑ Ferramentas caras
– Ferramentas free não possuem bom suporte a EJB
(ex. JBuilder Personal, Netbeans e Eclipse versus
JBuilder Enterprise, Forte e WSAD)
❑ Dificuldade de encontrar mão de obra especializada
❑ Baixa produtividade
7. Custo total para o cliente
❑ Custo alto da aplicação (mão de obra especializada,
hardware de desenvolvimento mais caro,
ferramentas de desenvolvimento mais caras, baixa
produtividade)
❑ Custo do servidor de aplicação
– BES AppServer Edition 5.0.1 – U$ 12k / CPU
– IBM Websphere Enterprise 4.1 – U$ 35k / CPU
– OAS 9i Enterprise 9.0.2 – U$ 20k / CPU
– OAS X ORION
(fonte: http://www.flashline.com/components/appservermatrix.jsp)
❑ Mão-de-obra especializada (administrador de
sistemas com conhecimento em servidores de
aplicação) – raro e caro
8. Problemas de portabilidade
❑ O mapeamento CMP (Deployment Descriptor) não é
portável
❑ Nem sempre existem ferramentas para conversão
(aliás, normalmente não existem), e quando
existem, não funcionam 100% (tem que fazer uma
parte manualmente)
❑ Nem sempre podem ser convertidas sem perda de
informação (WebLogic x BAS)
❑ Não garante a portabilidade entre banco de dados
diferentes (EJB 1.1)
9. Problemas de portabilidade
❑ Usando EJB QL (EJB 2.0) poderia ser garantido a
portabilidade entre bancos, mas, ainda é muito
nova e possui muitas limitações:
– order by vai sair no EJB 2.1
– Funções de agregação
– Funções de manipulação de datas
❑ DATASUS tenta migrar para outros Servidores de
Aplicação e outros Bancos de Dados e o custo é
alto
10. Problemas de performance
❑ Alterações feitas em outros sistemas ou feitas
diretamente no banco são refletidas imediatamente
pelos beans
– Queries precisam ser feitas para validar informações
em cache
– Queries tem que ser completas (select * ...), porque
nem todos os bancos possuem um timestamp que
guarde o momento da última alteração ou um campo
de versão do registro
❑ Atualizações em CMP são sincronizadas no banco
no máximo até o fim da transação
– Quando em uma mesma transação fazer consultas
sob atualizações feitas antes, a informação pode não
ter sido colocada no banco ainda (Rotinas Batch do
DATASUS) – solução: atualizações usando DAO
11. Problemas de performance
❑ Para fazer finds, precisamos de 1+n queries para
trazer todos os dados (no caso de CMP, o servidor
pode otimizar isso, mas, não acontece sempre)
❑ Fazer chamadas remotas para Entity Beans, é
inviável (padrão DTO)
❑ Entity Beans não precisam ser distribuidos
(Interfaces Locais - EJB 2)
12. Restrições EJB
❑ Nada de Threads
❑ Nada de java.io.*
❑ Nada de Sockets
❑ Nada de AWT
❑ Nada de JNI
❑ Nada de (mais um bocado de coisas)...
❑ Ainda tem um monte de restrições com o uso de
classloaders, reflection, atributos estáticos,
sincronização, security manager, e por aí vai...
13. E tem mais...
❑ O Servidor de Aplicação oferece uma série de
recursos que a gente não utiliza, não porque não
quer, mas, porque não precisa
14. Estudo de caso (DATASUS – SISREG)
❑ É um sistema que vai ser instalado em vários
pontos do país
❑ Projeto de implantação comprometido pelo custo
❑ Alternativas sendo cogitadas
– Reaproveitamento de Hardware (CNS)
– Servidores gratuitos (JBOSS)
– Bancos de Dados gratuitos (POSTGRESQL)
– Mão-de-obra gratuita ? (escravos)
15. Como contornar os problemas ?
❑ Principais ”vantagens” de Enterprise Java Beans:
– Distribuição dos componentes gerenciadas pelo
container
– Persistência de componentes gerenciadas pelo
container
– Transações gerenciadas pelo container
– Portabilidade entre diversos servidores de aplicação.
16. Distribuição
❑ Nem sempre é necessário distribuir nossas
aplicações
– Um desenvolvedor implementando um caso de uso
poucas vezes precisa testar de forma distribuída
– Alguns sistemas não precisam de distribuição
❑ A arquitetura do CESAR pode auxiliar no isolamento
da distribuição
❑ A implementação de uma camada de distribuição
pode ser desenvolvida em separado ou substituída
sem grandes impactos na aplicação
17. Distribuição
❑ FachadaControlador é o ponto de distribuição
❑ Somente a FachadaControlador precisa ser um
objeto remoto
❑ As regras de negócio ficam na implementação do
controlador
Controlador B
Cadastro
Fachada
Controlador B
Repositório
Cadastro
Repositório
Cadastro
Repositório
Controlador A
Cadastro
Fachada
Controlador A
Repositório
Cadastro
Repositório
Cadastros
Repositórios
18. Distribuição
❑ Podemos ter diversos tipos de implementação para a
FachadaControlador (ex. CORBA, RMI, Web Services ou
até um Session Bean)
❑ Referência para o controladores obtida através de um
ServiceLocator que pode retornar uma referência local
ou remota sempre utilizando a interface da
FachadaControlador
❑ FachadaControlador completa pode ser facilmente
gerada por uma ferramenta (ex. QualitiCoder)
19. Tecnologias de Distribuição
❑ CORBA (GIOP/IIOP)
– Brokers tem custo alto em ambientes legados
– Implementação de aplicações necessita de maior
esforço
– Independente de linguagem
– Independente de plataforma
– Serviços básicos, de infra-estrutura e de domínios
específicos padronizados
– Solução mais utilizada para integração com legado
– Suporta comunicação síncrona/assíncrona
20. Tecnologias de Distribuição
❑ RMI/IIOP
– Comunicação síncrona
– Comunicação possível com aplicações não-Java
– Dependente de linguagem (Java)
– Normalmente utiliza um broker CORBA
– Solução utilizada para comunicação entre Enterprise
Java Beans
❑ RMI/JRMP
– Comunicação síncrona
– Comunicação apenas entre aplicações Java
– Dependente de linguagem (Java)
21. Tecnologias de Distribuição
❑ Web Services (SOAP/HTTP)
– Baixo desempenho devido as mensagens XML
– Independente de linguagem
– Independente de plataforma
– Necessita de mais amadurecimento (suporte a
segurança e transações distribuídas)
– Utilização de XML como base facilita a integração com
outros sistemas
– Suporta comunicação síncrona/assíncrona
22. Transações
❑ Normalmente precisamos de transações, contudo
nem sempre distribuídas
❑ Não precisamos criar dependências de uma
tecnologia específica
– Mudança do mecanismo não deve afetar a aplicação
❑ Utilizando conceitos da arquitetura CESAR, criamos
uma camada de abstração do mecanismo de
transações
23. Transações
❑ Criamos uma API para abstração dos mecanismos
❑ Para cada mecanismo de transação implementamos
um conjunto de interfaces da API
❑ FachadaControlador delimita o início e final das
transações
Controlador A
Cadastro
Fachada
Controlador A
Repositório
Cadastro
Repositório
Cadastros
Repositórios
public void aMethod() throws ControladorException {
Transaction.begin();
try {
ControladorA.getInstance().aMethod();
Transaction.commit();
} catch (ControladorException ex) {
Transaction.abort();
throw ex;
}
}
24. Tecnologias de Transações
❑ CORBA Object Transaction Service (OTS)
– Independência de linguagens
– Independência de plataformas
– Serviço padronizado
– Suporte a transações distribuídas
❑ Java Transaction Architecture/Service
– Comunicação possível com aplicações não-Java
– Implementa o OTS
– Independente de plataformas
– Serviço padronizado
– Suporte a transações distribuídas
25. Tecnologias de Transações
❑ Transações baseadas no mecanismos de
persistência (ex. JDBC, JDO)
– Não suporta distribuição
❑ Transações FIC
– Solução CESAR que atendeu a demanda de muitos
sistemas
26. Persistência
❑ Ponto mais fraco de Enterprise Java Beans
– Relacionamentos gerenciados pelo container
extremamente restritivo. No final implementamos os
relacionamentos manualmente (EJB 2.0)
– Linguagem de consulta padronizada não atende ao
mínimo (ex. falta funções de ordenação, agregação e
para manipulação de datas)
– O mapeamento CMP não é portável.
– Portabilidade com baixo custo é uma lenda. As
poucas ferramentas que tentam converter sempre
perdem informações depois da conversão
❑ Existem diversas soluções maduras para
mapeamento objeto/relacional
27. Tecnologias de persistência
❑ Object/Relational Mapping Tool
– Exolab Castor (free)
– Hibernate (free)
– Jakarta ObJectRelationalBridge (OJB) (free)
– ObjectMatter VBSF O/R Mapping Tool
– WebGain TopLink
– Thought Cocobase
❑ Java Data Objects (JDO)
– Pode resolver o problema da falta de um padrão Java
para mapeamento objeto-relacional
– Algumas ferramentas de mapeamento já começaram
a se adequar a este padrão
28. Estimativa de Esforço
❑ Comparativo com Modelo 01 (EJB), Modelo 02
(Arquitetura 1) e Modelo 05 (Reaact – VBSF)
Caso de
uso
Modelo 01
EJB
Modelo 02
Arquit. 1
Modelo 05
Reaact
Novo
Modelo
Simples 2 1,5 1 1
Médio 4 3 2 2
Complexo 7 5 4 4
Muito
Complexo
10 7 5,20 5,20
29. Conclusão
❑ Enterprise Java Beans não resolve todos os nossos
problemas com baixo custo
❑ Com pequenas mudanças podemos:
– Não ficar presos a uma tecnologia
– Melhorar mais a produtividade
– Não comprometer em nada aspectos de
escalabilidade (provavelmente até podemos melhorar
nesse aspecto)
❑ Estamos fazendo um esforço no sentido de elaborar
uma alternativa ao EJB já para o projeto SIMAC