:: NEO Framework... Novo projeto Open Source brasileiro!

A empresa linkcom, na qual eu trabalhava aqui em BH, abriu o código de seu framework interno chamado NEO. Ele é baseado em Spring/Spring MVC e Hibernate e facilita muito o desenvolvimento de aplicações, principalmente na criação de CRUD…

Vcs podem baixa-lo em http://www.neoframework.org e testa-lo, tirarem duvidas aqui, dá sugestões e por fim participar em seu desenvolvimento… O site ainda está imcompleto (alguns capitulos da documentação ainda nao foram postados) porem esta sendo atualizado todos os dias e o material q lá se encontra já é suficiente para sua utilização…

Espero que vcs postem seus comentarios. logo o Rógel, criador do framework, vai esta aqui tb respondendo suas dúvidas!!!

[color=darkred]Movido para assuntos gerais porque o framework ainda carece de documentação, principalmente quanto à licença.[/color]

[quote=Hal Jordan]A empresa linkcom, na qual eu trabalhava aqui em BH, abriu o código de seu framework interno chamado NEO. Ele é baseado em Spring/Spring MVC e Hibernate e facilita muito o desenvolvimento de aplicações, principalmente na criação de CRUD…

Vcs podem baixa-lo em http://www.neoframework.org e testa-lo, tirarem duvidas aqui, dá sugestões e por fim participar em seu desenvolvimento… O site ainda está imcompleto (alguns capitulos da documentação ainda nao foram postados) porem esta sendo atualizado todos os dias e o material q lá se encontra já é suficiente para sua utilização…

Espero que vcs postem seus comentarios. logo o Rógel, criador do framework, vai esta aqui tb respondendo suas dúvidas!!!

[color=darkred]Movido para assuntos gerais porque o framework ainda carece de documentação, principalmente quanto à licença.[/color][/quote]

Muito legal a postura da empresa, em compartilhar expertise com o mercado, entretanto, adicionamos mais um à estatística e ao problema do meio java… Frameworks em excesso !!

Opa opa… faltam somente uns 3 capitulos da documentação… Tem documentação sim…

E eu esqueci de falar, a licensa é LGPL… Vai ser colocado daqui a poko lá…

Devia ter pergutnado antes de mudar :?

documentação auqi

http://www.neoframework.org/dist/documentacao/index.html

Ei Hal Jordan;

Poupe-nos um pouco do trabalho, diga quais as inovações do neo framework.

fazer por fazer crud a gente usa rails com um scaffold e pronto :frowning: :frowning:

quantos segundos pra fazer um crud no netbeans 6? :stuck_out_tongue:

[quote=Kenobi][quote=Hal Jordan]A empresa linkcom, na qual eu trabalhava aqui em BH, abriu o código de seu framework interno chamado NEO. Ele é baseado em Spring/Spring MVC e Hibernate e facilita muito o desenvolvimento de aplicações, principalmente na criação de CRUD…

Vcs podem baixa-lo em http://www.neoframework.org e testa-lo, tirarem duvidas aqui, dá sugestões e por fim participar em seu desenvolvimento… O site ainda está imcompleto (alguns capitulos da documentação ainda nao foram postados) porem esta sendo atualizado todos os dias e o material q lá se encontra já é suficiente para sua utilização…

Espero que vcs postem seus comentarios. logo o Rógel, criador do framework, vai esta aqui tb respondendo suas dúvidas!!!

[color=darkred]Movido para assuntos gerais porque o framework ainda carece de documentação, principalmente quanto à licença.[/color][/quote]

Muito legal a postura da empresa, em compartilhar expertise com o mercado, entretanto, adicionamos mais um à estatística e ao problema do meio java… Frameworks em excesso !! [/quote]

Na verdade ele não é nada mais nada menos q Spring com Hibernate, ou seja, tudo q vc faz com eles vc faz no NEO, então nao é um framework que pretende fazer você aprender milhares de coisas novas, desconhecidas e não testadas, mas sim ele abstrai a maioria das tarefas que são feitas com ambos frameworks…

Olá

[quote=Hal Jordan]documentação auqi

http://www.neoframework.org/dist/documentacao/index.html[/quote]

Sem muitas polêmicas, mas enquanto as coisas estiverem assim e sem caracterização clara como Open Source, isto nem deveria estar aqui como assuntos gerais.

[]s
Luca

[quote=Leozin]fazer por fazer crud a gente usa rails com um scaffold e pronto :frowning: :frowning:

quantos segundos pra fazer um crud no netbeans 6? :P[/quote]

Escolher tecnologia não é simplesmente escolher… “Ah, se eu quero isso uso a tec X!!!”… Se vc possui uma empresa onde toda sua base de conhecimento tecnologico está emcima de Hibernate e Spring não vale a pena troca da noite pro dia para qualquer outra diferente… E como ele é baseado em ambas as tecnologias, enfim

[quote=nbluis]Ei Hal Jordan;

Poupe-nos um pouco do trabalho, diga quais as inovações do neo framework.[/quote]

http://www.neoframework.org/siteneo/apresentacao

Olá!

2 Sugestões:
Javadoc! Baixei o código e olhei, mas sem javadoc não dá, pouca coisa tem documentacao.
Dica, baixa o source do spring e olha os javadoc dos cara.

Teste unitários!

No mais, parabéns pela iniciativa de abrir o código! :wink:

Embora exista uma tendência de substituir os mal falados XML por Annotations, acho que a ferramenta de vcs é muito boa.
Achei a velocidade de desenvolvimento boa, no entanto, essa dependencia do Hibernate ( até onde percebi) é o que mata.

Gostaria de informar-lhes que a geração do javadoc já está sendo providenciada.

Quanto à licença, foi colocada a LGPL para o projeto e também já foi alterado no site. Em breve terá a referência no código fonte do projeto.

Quanto à dependência do hibernate, realmente somos totalmente dependentes, mas atualmente já é possível usar o jdbc em conjunto com o hibernate, através do jdbc template fornecido pelo spring. Porém, não tem como retirar tudo relacionado ao hibernate até este momento.

Isso já temos suporte. Em breve disponibilizaremos no site do projeto um tutorial.

O neo foi desenvolvido para as necessidades da Linkcom, e no momento do seu desenvolvimento não foi pensado nessa flexibilidade. As coisas foram sendo implementadas à medida em que surgiam necessidade. Aos poucos, ao longo das futuras versões, iremos lançar as melhorias sugeridas pelos usuários. Por isso, é importante a participação e colaboração de todos.

Obrigado.

Olá pessoal, eu sou Rógel Garcia, criador do framework NEO.

O site já está atualizado com a licença, e os fontes em breve já terão referencia à LGPL.

A documentação já está com o conteúdo principal para começar a trabalhar com o framework. Novas atualizações serão feitas ao longo do tempo para torná-la mais abrangente.

Porque mais um framework?

Mesmo utilizando frameworks disponíveis no mercado ainda precisamos de codificação desnecessárias. Isso porque os frameworks tem um determinado propósito que não chegam a ser um propósito tão profundo quando o propósito do NEO.

Por exemplo, utilizamos o hibernate para fazer o mapeamento dos objetos ao banco de dados. Mas em cada aplicação temos que implementar um método findAll() em cada DAO. Ou então, criamos um campo do tipo Date em alguma classe e precisamos declarar uma validação para datas em algum XML. Esse tipo de trabalho que ainda tem que ser feito mesmo utilizando frameworks é que o NEO tenta resolver.

O NEO não propõe mais um framework, mas sim o próximo passo dos frameworks. Tanto que o NEO utiliza como base os frameworks Spring e Hibernate. O que o NEO propõe está além do que esses framework já propuseram.

A facilidade de desenvolvimento é um ponto chave do NEO. Eu também sou programador e criei um framework para facilitar o trabalho do programador (eu, no caso :D).

Uma das formas de facilitar o desenvolvimento é a não utilização de XML. Antes de existir o NEO, nós utilizávamos Struts para desenvolver na empresa. E eu ficava desanimado porque depois de criar uma Action com um bocado de código ainda tinha que declarar um form, uma action e forwards no struts.xml. Eu me perguntava, porque tenho que declarar isso tudo? Geralmente para fazer uma tela eu tinha que utilizar 3 XMLs. Um para o struts, um para a validação e um para o mapeamento no banco de dados. No NEO esses arquivos simplismente não existem. O NEO, ao ligar a aplicação, procura por classes especiais (como Actions do struts) e faz o registro automaticamente. Não é necessário indicar em nenhum lugar que as classes existem. O NEO simplismente acha.

Outro recurso, é que códigos comuns já vem implementados. Quantas vezes você tem que fazer uma tela de CRUD por dia? Ou um método findBy dentro de um DAO. O NEO fornece DAOs implementados, isto é, com funcionalidades que podem ser utilizadas sem nenhuma linha de código. Além disso ele possui Controllers especificos para as situações mais comuns como CRUDs e relatórios. Não é necessário nenhuma linha de código Java (a não ser a linha que declara a classe) para fazer um CRUD ou DAO. Se desejar modificar o comportamento padrão, você só precisará escrever o que for diferente.

A validação do NEO é feita através de annotations. O simples fato de anotar um getter com @Required faz com que qualquer tela que utilize essa propriedade ganhe a validação automática. Também é feita uma validação no servidor. Campos que forem do tipo Date por exemplo já ganham validação do tipo Date, não é preciso indicar ao framework que o campo date é um date.

Com nenhuma linha de código Java é possível fazer uma dependencia de combos utilizando Ajax.

<n:comboReloadGroup useAjax="true">
   <t:property name="pais"/>
   <t:property name="estado"/>
   <t:property name="cidade"/>
</n:comboReloadGroup>

Pronto! O código acima irá criar todo o javascript necessário para fazer o reload utilizando ajax. Há! Também não é necessário informar que no campo pais, estado ou cidade você deseja um combo. O Framework já sabe. Todas as propriedades que forem entidades já são combo por padrão. A lista a ser preenchida em cada combo vem do DAO que não foi necessário códificar.

public class PaisDAO extends GenericDAO<Pais> {
}

O NEO utiliza sempre que possível Generics. Casts são praticamente inexistentes em aplicações com o NEO. Para utilizar o dao de Pais acima você teria o seguinte código:

List<Pais> lista = paisDAO.findAll(); // todos os finds são genéricos
for(Pais pais: lista){
    System.out.println(pais.getNome));
}

Construir queries também é fácil. O NEO provê uma classe, a QueryBuilder, que serve exclusivamente para contruir queries. Veja:

Sem queryBuilder

String query = "from Aluno ";
if(filtro.getNome() != null){
     query+= "where nome = ?";
}
Query query = session.createQuery(query);
if(filtro.getNome() != null){
     query.setString(1, filtro.getNome());
}
return query.list();

(Tem algum tempo que não utilizo hibernate diretamente, mas existe alguma forma de fazer isso mais simples? Até onde eu saiba, utilizando Criteria não é possível atingir o mesmo efeito porque não é eliminada a condição where nome = ? se nome for null)

Com o QueryBuilder

return query() // o método query() é disponível em todos DAOs
              .from(Aluno.class)
              .where("aluno.nome = ?", filtro.getNome())
              .list();

Um dos princípios da orientação a objetos é o High Cohesion (Alta coesão). Isso significa que códigos relacionados devem ficar próximos. Uma Action do Struts por exemplo não promove isso, uma vez que cada operação fica dentro de uma classe diferente. O NEO possui um controller, o MultiActionController (não é o mesmo do Spring), que permite o High Cohesion. Para adicionar uma nova operação ao controller basta criar um novo método. Códigos relacionados agora, podem ficar dentro da mesma classe, cada operação com o seu método.

Nos JSPs não é necessário falar que determinado input deve possuir máscara para data. Se a propriedade a que se refere o input é do tipo data a máscara será colocada. Se for Double, será colocada uma máscara para Double, se for CPF será colocada uma máscara para CPF. O NEO possui outros tipos de dados como CPF, CNPJ, CEP e Money.

A classe Money possui inclusive métodos para calcular com dinheiro que evitam a perda dos centavos em operações matemáticas.

Essas são algumas idéias que o NEO possui e que diferenciam ele dos outros frameworks. O intuito do NEO é resolver o problema. O NEO efetua configurações, ajustes, realiza operações, escolhe propriedades tudo de acordo com o que foi programado. Ou seja, você programa o mínimo necessário e o NEO faz o resto. Na nossa empresa a pior estimativa de melhora no desenvolvimento depois do NEO foi de 30%.

O NEO existe há dois anos mas só agora está sendo liberado o código fonte. O desenvolvimento do framework foi direcionado pelas necessidades da Linkcom (empresa onde trabalho). Por isso alguns ajustes ou novas funcionalidades ainda são necessários. Mas o framework já possui um conjunto bom de funcionalidades para se desenvolver aplicações. Inclusive, o sistema da Universidade FUMEC é desenvolvido utilizando o NEO.

Dúvidas serão respondidas no fórum do framework. Sugestões são muito bem vindas. Bugs serão corrigidos o mais rápido possível. Espero que o framework seja de grande utilidade para vocês no desenvolvimento de aplicações.

Muito Obrigado pela atenção…

Até mais…

Parabéns pelo framework. Ficou bem legal e qualquer abstração de complexidade é sempre bem-vinda…

Isso já temos suporte. Em breve disponibilizaremos no site do projeto um tutorial.[/quote]

Como assim, “já temos suporte”? Cade os testes unitarios do proprio Neo?

Correndo o risco de bater demais nessa tecla, com a qual o saoj ja apanhou ha pouco tempo atras, mas dar as caras e dizer que fez um framework sem mostrar os testes pra provar que ele funciona eh a mais pura canalhice e má-fé com quem, sem saber no que está se metendo, comeca a usar o seu framework num projeto de verdade.

Foi mal, mas… putz.

Olá

Galera do NEO, parabéns pelo projeto mas o CV tem toneladas de razão.

[quote=cv] Cade os testes unitarios do proprio Neo?

Correndo o risco de bater demais nessa tecla, [/quote]

CV, acho que nunca é demais ressaltar isto.

Ultimamente eu me convenci definitivamente de 2 coisas:

  1. EJBs < 3.0 foram a maior asneira que eu conheci nos meus 38 anos de informática.
  2. É um absurdo ensinar alguma linguagem em pleno ano de 2006 sem forçar o aluno a escrever seu primeiro Hello World com testes unitários.

Por isto a gente sempre precisa fazer como você fez. Por mais antipático que a gente pareça, na verdade a estamos fazendo um enorme favor para toda a comunidade que nos lê.

Acho até que a gente aqui no GUJ nem deveria divulgar projetos, brasileiros ou não, sem testes unitários como maneira de forçar as coisas melhorarem.

[]s
Luca

cv , concordo plenamente com você…

os testes unitários são importantes, quanto a isso não vamos nem entrar em discução. O projeto ainda é novo, estamos passando por um processo de flexibilização dele, até porque era um framework fechado dentro da empresa, como o próprio rógel disse, mais aos poucos vamos deixá-lo da maneira que agrade o maior número possível de pessoas e empresas.

Sérgio, fico agradecido pelo elogio que você vez… ainda mais você!!

[]'s

Galera, concordo plenamente com a importancia de testes unitários. Principalmente em um framework que vai ser a base de uma aplicação.

Mas não é porque não tem teste que devemos parar de divulgar novos projetos, ou projetos antigos.

Acho que seria mais legal uma campanha ao invés de proibir.
Vamos liberar e dar apoio para que os projetos cresçam e tenham testes, ao invés de virar as costas no primeiro suspiro de algo novo, ou de algo que precisa de ajuda - da nossa ajuda.
Então o projeto precisa da nossa divulgação, da nossa conscientização, dos conselhos e experiencias que todo mundo já passou, seja com testes ou em outras áreas.
Acho que precisamos disso, de andar junto. Não de ditadura, afinal essa epoca não está mais na moda :stuck_out_tongue: (sem querer criticar, entendo as preocupações de todo mundo)

Bom, agora quanto ao tópico… pessoal do Neo, parabéns pela iniciativa! Gosto de toda essa dedicação a produtividade. Meu artigo da Mundo Java desse mês é até sobre algo nesse sentido. Fala muito de produtividade.
Vi um vídeo do neo, mas não avaliei a solução como um todo ainda.

E dando um puxão de orelha mais ao meu estilo, espero que não esqueçam dos testes. Nesse perfil de aplicação, eles são quase obrigatorios para dar credibilidade a um framework que vai ser core de uma aplicação em produção.

No geral gosto das idéias do Luca, espero que nesse caso ele ajude a divulgar o projeto de vocês. Sei como isso é importante.

Abraços,

ah outra coisa: coloquem o fonte do projeto hospedado em um host de projetos opensource. Não precisa fazer isso com o site todo. Mas com o fonte é importante.

Assim garante que amanhã a linkcom não vai desligar o server e todo mundo ficar sem acesso aos fontes (de um projeto que está em produção por exemplo). Ou seja, é legal os fontes e talvez a até a documentação estarem em um SVN ou CVS publico.

Somente sugestões…

flw