Quarta, Agosto 23, 2017
Tamanho Texto

Digitalis Framework - DIF

Algum contexto do projecto

O projecto consiste numa framework de desenvolvimento Java Open-source.
A licença escolhida é a "New BSD", uma das mais abertas, possibilitando sem qualquer reserva a utilização da framework para criação de produtos para fins comerciais lucrativos.

A Digitalis decidiu criar este projecto para seu uso próprio, e também, numa tentativa de interagir com uma comunidade externa que num futuro próximo possa contribuir para o projecto.
É naturalmente também uma forma de aumentarmos a credibilidade técnica das nossas soluções mostrando o fruto do nosso know-how de forma tão transparente.
Os frutos desta abertura estão já a ser visíveis com vários interessados de entre os nossos próprios clientes e não só, para a adopção da framework para os seus desenvolvimentos internos. Temos recebido também destas instituições feedback muito positivo sobre o nível técnico do projecto, o que muito nos tem motivado.

Esta iniciativa não é contida apenas ao projecto da framework DIF, embora seja claramente a peça central de toda a iniciativa.
Poderá ser consultado o http://development.digitalis.pt/apache2-default/staging/ onde poderão ser validados vários projectos autónomos que embora sirvam quase todos de base à DIF, não são todos dependentes da mesma.

O projecto DIF está extensamente documentado na página do mesmo.
Dou-vos todos os links para a área "staging" do mesmo site que tem sempre as contribuições mais recentes, podendo alguma estar até em dado momento em construção.
http://development.digitalis.pt/apache2-default/staging/dif2/index.html

Este projecto é um híbrido de interesses comerciais, e comunitários. Como tal será normal encontrar na framework preocupações com a produção de produtos em massa facilitando o deployment e configuração do produto, ou personalização visual ou textual das aplicações pelos próprios clientes das mesmas, claramente necessidades de produtos comerciais; como será normal encontrar a lista de desejos de evolução, melhorias da legibilidade/documentação de algum código específico, ou features "user friendly" mais ambiciosas que normalmente estão associadas ao "perfeccionismo" dos projectos open-source onde o investimento não é todo equacionado na óptica da sua sustentabilidade financeira.
Isto acontece precisamente porque o projecto tem já nos próprios funcionários da Digitalis contribuidores em regime de open-source para o projecto, bem como uma filosofia que a Digitalis tem investido de tratar este projecto o mais possível com esta forma de pensar.

Descrição do projecto

A DIF2 é um "complete makeover" de uma primeira versão da DIF. Aprendemos muito com a primeira versão que é ainda hoje a base da maior parte das aplicações Web da Digitalis e que tem perto de 5 anos de evolução. Mesmo esta primeira versão era já acente sobre as experiências de outras duas frameworks externas adoptadas pela Digitalis para desenvolvimento de aplicações Web.
Este makeover utiliza as tecnologias e boas práticas que actualmente mais estão em uso, sendo uma total revolução tecnológica relativamente à sua anterior versão, embora mantendo o conceito da mesma.
Poderão consultar uma apresentação do projecto mais exaustiva aqui: http://development.digitalis.pt/apache2-default/staging/dif2/files/dif2-comercial-presentation-PT.pdf

O projecto poderá definir-se pelos seguintes macro-pontos:

  1. Framework Java, multi-canal
    1. Desenvolvimento similar para criar Serviços Web, WebServices, Portlets, Jobs. (É irrelevante o canal de comunicação).
    2. Os canais não estão actualmente todos implementados, mas isso é irrelevante para o desenvolvimento dos serviços visto que o canal é abstraido.
  2.  

  3. Arquitectura SOA
    1. Existe uma hierarquia definida de serviços, que organiza as aplicações em conjuntos de serviços e suas etapas. Os parâmetros de chamada são declarados e geridos e o resultado é padronizado. Desta forma para lá de uma estrutura Service Oriented temos a possibilidade de no futuro extender a DIF e todos os serviços sobre ela desenvolvidos para integrações sem esforço com ESBs (Enterprise Service Bus) de SOA.
  4.  

  5. Component oriented
    1. A DIF propicia o desenvolvimento por componentes, para maximizar a modularidade e a sua reutilização.
    2. A DIF estende muito as normais funcionalidades dos JSPs e TagLibraries da Servlet API para que tal seja possível.
    3. Conceitos como páginas "component aware", templates dinâmicos, etc. são possibilitados e geridos pela DIF.
    4. Ver: http://development.digitalis.pt/apache2-default/staging/dif2/dif-userguide/webdev/templates.html
  6.  

  7. Modularidade & Integração
    1. Toda a framework é modular. O conceito IoC ou Dependency Injection está presente na ligação de todas as peças da framework. É pois possível substituir, personalizar ou estender qualquer uma das suas funcionalidades. A DIF integrou para tal o Google Guice entendendo as suas funcionalidades no módulo IoC Utils.
    2. É possível como exemplo ter a mesma aplicação a funcionar com Active Directory e Users em BD específica, ou mensagens hard-coded ou personalizáveis em BD, ou ainda autenticação proprietária ou integrada num qualquer servidor central de autenticação. Tudo isto sem qualquer alteração de código.
    3. Estas possibilidades não se restringem a leitura dos respectivos repositórios, mas sim à tua total manipulação se desejado (Ex. a aplicação pode automaticamente criar os users default caso não existam em qualquer repositório de utilizadores (como LDAP por exemplo) e atribuir direitos ao mesmo, com uma linha de código apenas!
    4. Ver: http://development.digitalis.pt/apache2-default/staging/dif2/plugable.html
  8.  

  9. Interfaces ricos e acessíveis
    1. A DIF é composta por inúmeros componentes de UI (mais de 60 actualmente e sempre a crescer).
    2. A preocupação dos nossos técnicos e Web-Designers acenta sempre sobre: Visual apelativo, usabilidade, acessibilidade e facilidade de desenvolvimento
    3. Todos potenciam uma experiência rica Web 2.0, ao mesmo tipo que fazem "graceful degradation" para ambientes sem Java-Script ou navegação por pessoas como problemas de acessibilidade (é compliant com http://www.w3.org/WAI/)
    4. Ver: http://development.digitalis.pt/apache2-default/staging/dif2/dif-presentation/tag_reference.html
  10.  

  11. Convention over Configuration over Development
    1. Lema que faz com que a larga maioria das necessidades comuns não seja implementada mas sim "ligada". As mais comuns são até por omissão ou convenção automaticamente adicionadas às nossas aplicações
  12.  

  13. Geração de código
    1. Reverse engineering de Model para acesso a RDBMS (ORM): O "ORM Generator" integrado com a camada dif-model automatiza a larga maioria do código Java necessário criar para aceder a bases de dados SQL. Baseado em Hibernate, a DIF adicionou a este um conjunto alargado de funcionalidades.
    2. Ver: http://development.digitalis.pt/apache2-default/staging/ormgenerator/index.html
    3. A DIF gera grande parte do código necessário para interagir com a própria. A utilização das suas features é muito orientada ao uso de anotações. Isto facilita e ajuda a manter o nosso código alheio a mudanças de API normalmente associadas a novas versões das frameworks que usamos
    4. Ver: http://development.digitalis.pt/apache2-default/staging/dif2/dif-core/annotation_reference.html
  14.  

  15. RAD & Features
    1. Para lá da flexibilidade, a produtividade é uma das principais preocupações em tudo o que é feito na DIF. Como tal uma pequena compilação de features poderá dar a ideia do que se pretende ganhar com a adopção da DIF:
    2. AJAX automático (com graceful degradation sem Java-Script)
    3. +60 componentes repletos de features, e a lista continua a crescer (integra a API de Java-Script ExtJS)
    4. Geração de interfaces virtualmente sem uma linha de HTML/CSS/Java-Script, aderindo aos componentes padronizados, ou em alternativa sempre que se quiser complementando os mesmos com normal desenvolvimento dado que as Views são JSPs
    5. Visual totalmente parametrizável ao nível do HTML/Java-Script/CSS gerado sem alterar uma linha de código da aplicação (se usarmos os componentes de UI da DIF)
    6. Motor de reports integrado com geração automática no formato desejado (JasperReports).
    7. Motor de regras de negócio
    8. Geração de gráficos estatísticos automatizada (integração do JFreeChart).
    9. Modo componente e templates de qualquer stage
    10. Integração de servidores vários de autenticação, autorização e identidade, de forma totalmente abstraida da aplicação.
    11. Controle de acessos a serviços transversal a todas as funcionalidades e componentes por toda a aplicação, tornando esta preocupação alheia ao developer.
    12. DataSets simplificados, querys sobre Listas de objectos, ou tabelas com todas mesmas features (filtros, ordenação, paginação) e de forma muito simplificada.
    13. Gestão de parâmetros de chamada de etapas. Com gestão de ciclo de vida, âmbito, conversão, validação, etc.
    14. Internacionalização & personalização de mensagens. Out-of-the-box e sem qualquer impacto no developer.
    15. Interfaces comuns e de administração out-of-the-box, com fácil personalização. Ex.os: Erros, login, search, change password, etc.
    16. E muito mais...

     

  16. Automação de tarefas: Maven
    1. A adopção do Maven para a gestão técnica de todo o processo, automatiza e descomplica a larga maioria das tarefas que o developer e administrador tem que fazer.
    2. Tarefas como: Instalar ambiente de desenvolvimento, servidor aplicacional, deploy, compilação, testes unitários, geração de documentação, publicação de pacotes e documentação nos repositórios online, geração de código, etc. Tudo é automático e realizado pelo Maven.
    3. Para o que o Maven não tem out-of-the-box, a Digitalis extendeu as suas funcionalidades com alguns plugins. Ver o ORM Generator e oPackager.
  17.  

  18. Qualidade QAG
    1. Quality Assurance Guide é um conceito de garantia de qualidade que todos os produtos desta área devem cumprir. A cobertura de testes unitários do código é sempre pelo menos 80% e os mesmos estão automatizados no processo de desenvolvimento para que a cada alteração que um developer faz, todos os testes validem o funcionamento de todos os módulos como correcto.

Recursos disponíveis

Sendo a DIF um projecto open-source, um enorme esforço tem sido realizado na documentação do mesmo. O site da DIF tem à data de hoje mais de 7000 páginas que superam os 360Mb.

Os recursos existentes são por exemplo:

  1. Documentação genérica: http://development.digitalis.pt/apache2-default/staging/dif2/documentation.html
  2. Guias de utilizador: http://development.digitalis.pt/apache2-default/staging/dif2/dif-userguide/index.html
  3. Tutoriais: http://development.digitalis.pt/apache2-default/staging/dif2/tutorial/tutorial.html
  4. Screencasts: http://development.digitalis.pt/apache2-default/staging/dif2/screencasts.html
  5. Documentação de referência: TagsAnnotations, etc.
  6. JavaDoc e Consulta de source navegável em HTML
  7. Informação sobre testes de qualidade
  8. Wiki: http://development.digitalis.pt/mediawiki/index.php/Main_Page
  9. Issue tracking: http://development.digitalis.pt/cgi-bin/bugzilla/index.cgi
  10. Mailing list: http://groups.google.com/group/dif2?lnk=srg&hl=en&ie=UTF-8

 

Para lá destes recursos online, a Digitalis está preparada para prestar um conjunto de serviços comerciais para apoiar parceiros/clientes na sua adopção da DIF. Este são por exemplo os seguintes:

 

  • Workshops
  • Cursos de formação de desenvolvimento
  • Consultoria para startup de projectos, ou outras necessidades sobre a DIF
  • Fórum de discussão

 

Para uma descrição comercial dos mesmos poderá ser contactado o departamento comercial da Digitalis.