Mostrando postagens com marcador JSF. Mostrar todas as postagens
Mostrando postagens com marcador JSF. Mostrar todas as postagens

quarta-feira, 31 de dezembro de 2014

☕ O end-of-life do Seam Framework

 Durante muitos anos, o JBoss Seam foi um dos frameworks mais completos e influentes do ecossistema Java corporativo.

Ele unificava tecnologias como JSF, EJB e CDI (antes mesmo do CDI existir oficialmente), oferecendo uma abordagem elegante para aplicações enterprise.

Apesar de sua importância histórica, o Seam Framework está oficialmente em end-of-life há muitos anos — e ainda assim, continua presente em sistemas críticos no Brasil, como o PJ-e.


📌 O que foi o Seam Framework?

O Seam foi criado para:

  • Simplificar o desenvolvimento Java EE

  • Integrar JSF, EJB, JPA e segurança

  • Reduzir código boilerplate

  • Facilitar o desenvolvimento de aplicações corporativas

Na sua época, o Seam estava anos à frente do que existia no mercado.


⛔ End-of-life do Seam Framework

O desenvolvimento ativo do Seam foi encerrado oficialmente por volta de 2012.

Pontos importantes:

  • A última versão estável foi da linha Seam 2.x

  • Não há novas versões

  • Não há correções de segurança

  • Não há suporte oficial

O projeto foi descontinuado porque:

  • Muitas ideias do Seam foram incorporadas ao CDI

  • O Java EE evoluiu e absorveu seus conceitos

  • A manutenção do framework deixou de fazer sentido estratégico

Ou seja: o Seam cumpriu seu papel histórico, mas não evoluiu com a plataforma.


🔄 O legado do Seam no Java moderno

Mesmo descontinuado, o Seam deixou um legado enorme:

  • Influenciou diretamente o CDI

  • Inspirou frameworks modernos

  • Mudou a forma de pensar aplicações Java EE

Hoje, muito do que era diferencial no Seam é padrão da plataforma.


⚖️ O PJ-e do CNJ ainda utiliza Seam

Um ponto importante — e muitas vezes ignorado — é que o Processo Judicial Eletrônico (PJ-e), mantido pelo Conselho Nacional de Justiça, ainda utiliza o Seam Framework em sua arquitetura.

Isso acontece porque:

  • O sistema é grande e complexo

  • Está presente em praticamente todo o Judiciário brasileiro

  • Migrações desse porte exigem muito planejamento

  • Estabilidade é prioridade absoluta

Em sistemas dessa dimensão, trocar o framework não é trivial.


⚠️ Riscos e desafios do uso de Seam hoje

Manter um framework em EOL traz desafios claros:

  • Ausência de correções de segurança

  • Dependência de tecnologias legadas

  • Dificuldade de atualização da stack

  • Escassez de profissionais experientes

Por outro lado, também existe:

  • Grande base de código funcional

  • Conhecimento acumulado

  • Processos bem estabelecidos

É um equilíbrio delicado entre risco e custo.


🧠 Por que esses sistemas não migram facilmente?

Migrações em sistemas como o PJ-e envolvem:

  • Impacto nacional

  • Integrações com inúmeros tribunais

  • Riscos jurídicos e operacionais

  • Treinamento de equipes

Por isso, a estratégia costuma ser:

  • Manutenção controlada

  • Evolução gradual

  • Migração por partes, quando possível

Não existe “reescrita simples” nesse contexto.


📝 Conclusão

O Seam Framework está em end-of-life há mais de uma década, mas continua vivo em sistemas críticos por razões práticas, não técnicas.

O caso do PJ-e do CNJ mostra claramente que:

  • Legado não é sinônimo de abandono

  • Estabilidade muitas vezes vence modernização imediata

  • Arquitetura envolve contexto, não modismo

O Seam já não é o futuro — mas ainda faz parte do presente de muitos sistemas essenciais.

O The Dev Side segue discutindo tecnologia com visão crítica e realista ☕🏗️
Porque entender o legado é essencial para planejar o futuro.

quarta-feira, 29 de fevereiro de 2012

Como traduzir o componente Calendar para português no PrimeFaces 3

Se você migrou do PrimeFaces 2.x para a versão 3.x, deve ter notado uma mudança importante: o calendário (p:calendar) não vem mais traduzido automaticamente para o português. Na versão 3, é necessário configurar manualmente o locale.

Este post mostra o passo a passo para configurar a tradução completa do componente.

Passo 1: Criar e Configurar o Arquivo JavaScript

Crie um arquivo (ex: primefaces-locale-pt_BR.js) e adicione o seguinte código:


PrimeFaces.locales['pt_BR'] = {
closeText: 'Fechar', 
prevText: 'Anterior', 
nextText: 'Próximo', 
currentText: 'Hoje', 
monthNames: ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'], 
monthNamesShort: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'], 
dayNames: ['Domingo', 'Segunda-feira', 'Terça-feira', 'Quarta-feira', 'Quinta-feira', 'Sexta-feira', 'Sábado'], 
dayNamesShort: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb'], 
dayNamesMin: ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'], 
weekHeader: 'Semana', 
firstDay: 1, 
isRTL: false, 
showMonthAfterYear: false, 
yearSuffix: '', 
timeOnlyTitle: 'Somente Hora', 
timeText: 'Tempo', 
hourText: 'Hora', 
minuteText: 'Minuto', 
secondText: 'Segundo', 
ampm: false, 
month: 'Mês', 
week: 'Semana', 
day: 'Dia', 
allDayText: 'Dia Inteiro' };

Passo 2: Importar o JavaScript na Página

Inclua o arquivo criado em suas páginas XHTML/JSF. Você pode fazer isso de duas formas:

  1. Diretamente na página:
    <h:outputScript name="js/primefaces-locale-pt_BR.js" />
  2. Em um template principal (recomendado), para que fique disponível em todas as páginas que usam p:calendar.

Passo 3: Configurar o Componente p:calendar

No seu componente, adicione o atributo locale="pt_BR" para aplicar a tradução:

<p:calendar locale="pt_BR" showButtonPanel="true" navigator="true" id="ptCal" />

Explicação das Configurações Principais

  • firstDay: 1: Define Segunda-feira como o primeiro dia da semana (padrão brasileiro).
  • ampm: false: Configura o formato de 24 horas.
  • currentText: 'Hoje': Texto do botão para voltar à data atual.
  • allDayText: 'Dia Inteiro': Tradução para eventos de dia completo em agendas.

Dica Importante

Não se esqueça de importar o arquivo JavaScript nas páginas que utilizarem o componente p:calendar. Se sua aplicação usar um template (como Facelets templates), inclua o script nele para aplicar a tradução globalmente.

Dica de Boa Prática: Se sua aplicação for multilíngue, carregue este script condicionalmente com base no locale do usuário. Esta configuração também pode ser estendida para outros componentes do PrimeFaces que utilizam o mesmo objeto de localização.

Com esses passos, seu calendário do PrimeFaces 3 estará completamente traduzido e com a experiência do usuário adequada para o público brasileiro.