PHP VS JAVA Pontos fortes e fracos; Facilidade, flexibilidade, produtividade, mercado, conceituação, características, etc... * Métricas em quantidades de projetos e linhas de código (rede Ohloh) ZEND É um framework de aplicação web orientado a objetos de código aberto, desenvolvido em PHP 5, que tem como objetivo simplificar o desenvolvimento web; Possui uma arquitetura “use-at-will” (use a vontade) que permite que os desenvolvedores utilizem seus componente quando e onde estes fizerem sentido em sua aplicação, sem requerer outros componentes; ZEND Embora Zend forneça componentes para os padrões MVC e Table Gateway, não há um padrão de arquitetura de software que deva ser seguido por todos os desenvolvedores; HISTÓRIA 2005 2006 Em março, Zend Framework 1.5.0 é lançado; Em setembro, Zend_Framework 1.6.0 é lançado; Em novembro, Zend_Framework 1.7.0 é lançado; 2009 Em julho, Zend Framework 1.0.0 é lançado; 2008 Zend Framework 0.1.0; 2007 Começa a construção em seus meados e no fim do ano é promovida a primeira ZendCon; Em abril, Zend_Framework 1.8.0 é lançado; Em julho, Zend_Framework 1.9.0 é lançado; 2010 Em janeiro, Zend_Framework 1.10.0 é lançado; Em novembro, Zend_Framework 1.11.0 é lançado; CARACTERÍSTICAS Componentes em PHP 5, orientados a objetos; Fraco acoplamento entre componentes e interdependências mínimas; Possibilita projetos altamente modulares com facilidade; Implementação MVC; Implementação Table Data Gateway; Suporte a múltiplos SGBDs: MySQL, Oracle, IBM DB2, Microsoft SQL Server, PostgreSQL, SQLite, e Informix Dynamic Server; CARACTERÍSTICAS Serviços de autenticação e autorização; Filtro de dados e validação para fortalecimento da segurança da aplicação; Gerenciamento de sessão; Criação de formulários usando PHP, arquivos de configuração ou XML; Internationalização e localização; Comunidade ativa e participante Grande incentivo a linguagem PHP 5 ESTRUTURA COMPONENTES ZEND E BANCO DE DADOS Table Data Gateway; Conexão de forma transparente; Interface padrão independentemente do SGBD em uso; Alterações no código não são necessárias em caso de mudança; Possibilidade extremamente fácil de usar múltiplos SGBDs e/ou servidores; ZEND FORM Simplifica a criação e manipulação de formulários; Fácil re-usabilidade; Validação de dados; Filtro de dados; Modo de uso muito flexível; ZEND FORM Zend_Elements; text, textarea, select, checkbox, file, etc; Zend_Validate; Email, data, tamanho e muitos outros, além de fácil customização de um; Zend_Filter; Zend_Decorator; ZEND FORM Exemplo de uso: $form = new Zend_Form(); $form->addElement('text‘, ‘nome', array( ‘label’=> ‘Nome:’, ‘style’=> ‘width: 200px;’, ‘class’ => ‘classe_css’, ‘filters’ => array('StringTrim'), ‘validators’ => array('NotEmpty’), ‘decorators’ => array ('ViewHelper') )); /* Também pode se criar primeiramente um Zend_Form_Element_Text e então adicionar no form */ I18N NO ZEND O PHP possui muitos problemas nas suas soluções de internacionalização; APIs inconsistentes; Sem detecção de linguagem padrão; Entre outros; Zend busca uma forma trivial de permitir que os desenvolvedores internacionalizem suas aplicações; Zend_Translate é a solução do Zend Framework para aplicações multilíngües; ZEND TRANSLATE Não possui os mesmos problemas do PHP, por isso o mesmo é recomendado ao invés das funções nativas do PHP; Traduz a saída antes de passar para a view, assim não é necessário criar uma view para cada idioma que se deseja traduzir; Usado tanto de forma “global” quanto mais específica com facilidade ZEND TRANSLATE Basta um objeto do tipo Zend_Translate ser adicionado no registry do Zend com a chave ‘Zend_Translate’, e o tradutor é usado automaticamente de forma “global”; Pode lidar com vários adaptadores, são eles: Array, Csv, Gettext, Ini, Tbx, Tmx, Qt, Xliff, XmlTm, entre outros; TMX Translation Memory eXchange; É um padrão XML aberto para compartilhamento de memória de tradução criado para tradução assistida e ferramentas de localização; Possui um “banco” de pares de textos fontes e textos traduzidos; TMX <?xml version="1.0" encoding="UTF-8"?> <tmx version="2.0" xmlns="http://www.lisa.org/tmx20"> <header adminlang="en" creationtool="locale4j" creationtoolversion="1.1" otmf="unknown" segtype="block" srclang="*all*"/> <body> <tu tuid="cnpj_not_recognized"> <tuv xml:lang="en"> <seg>CNPJ not recognized.</seg> </tuv> <tuv xml:lang="pt"> <seg>CNPJ inválido.</seg> </tuv> </tu> ... ZEND TRANSLATE Exemplo de uso: $tradutor = new Zend_Translate ( 'tmx', APPLICATION_PATH . '/nls/arquivo.tmx', $lingua ); //tradução de uma string qualquer $traducao = $tradutor->_($stringChave); //ou pode ser adicionado em um Zend_Form $form->setTranslator($tradutor); I18N EM FORMS Mensagens de erro de validação; Labels de campos e botões; Legendas de campos; Descrições de forms e campos; Valores de elementos Multi-option (Zend_Form_Element_Multi); Basicamente, onde for preciso haver tradução; FONTES E REFERÊNCIAS http://framework.zend.com/ http://www.cin.ufpe.br/~if101/turmaatual/aulas /aula1/java.html http://pt.wikipedia.org/wiki/Java _(linguagem_de_programação) http://pt.wikipedia.org/wiki/PHP http://pt.wikipedia.org/wiki/Zend_Framework http://meiobit.com/32162/compare-aslinguagens-de-programacao/ E experiência pessoal.