Sistema Open-Source para Gerenciamento de Escolas

Pessoal, antes de mais nada, desculpem se estou postando no fórum errado. Acho que este é o mais “geral” mesmo, o meu assunto não se encaixa em nenhum outro.

Estou iniciando o desenvolvimento de um sistema distribuído para gerenciar a minha escola. Este sistema será para mim uma ferramenta não só de gerenciamento, mas acima de tudo de aprendizado.

Já faz algum tempo que venho estudando o Java e suas N tecnologias, e acho que está na hora de fazer um projeto “pra valer”. Quando digo “pra valer”, quero dizer algo grande.

Pode ser que minha escola não precise (ainda) de um sistema distribuído, mas já que eu quero fazer dessa forma para me aperfeiçoar, imaginei que isso poderia ser uma vantagem. O sistema deveria oferecer serviços tanto para a diretoria, quanto para professores e alunos.

Estou considerando o uso de EJB 3.1 e interfaces em Swing. Se alguém tiver uma ideia melhor… Mais detalhes em http://gamecursos.com.br/post-blog/projeto-open-source-agileschool/12.

Conforme for tendo algo pronto, vou disponibilizando no GitHub. Abraços :wink:

Legal usa iniciativa. Espero que dê certo. [=

Se quiser aproveitar conceitualmente algo para referência, acho que ainda tem o projeto SAGU, é um projeto bem antigo de gerenciamento de escolas/universidades, de uma pesquisada sobre ele.
[]s

Pessoal, thanks pelas respostas e pela dica do SAGU! Sim, vou dar uma olhada nele, de repente até aproveito algumas coisas, mesmo q seja conceitualmente.

Mas queria uma opinião do pessoal sobre a tecnologia que estou considerando, é uma boa ou há algo melhor? Por exemplo, usar o container do Spring e o Spring Remote para substituir os EJBs… Será meu primeiro projeto Java nessa linha, então não sei dizer qual é mais indicado.

Também haverá alguns módulos a serem disponibilizados online (via web), para esses considerei VRaptor ou Spring MVC. Qual vcs acham que é uma boa?

Obrigado!

Muito bom usar essa versão do EJB, é muito produtivo… mais porque você não faz uma interface “WEB” ?acredito que seria interessante para esse tipo de sistema.

Principalmente se usar JSF (PrimeFaces), aonde existe componentes “prontos” bem próximo de uma interface Desktop

Fala-se muito mesmo que interfaces desktop estão sendo deixadas de lado em favor de interfaces web. E sim, a interface do meu sistema não será 100% desktop, mas onde se aplicar eu prefiro esta por n razões:

  • facilidade de construção se eu usar ferramentas como o WindowBuilder do Eclipse
  • já faz parte do Java SE, ou seja, nada de bibliotecas ou peso extra na aplicação (eu ainda acho engraçado como se usam trocentas bibliotecas para se fazer uma app java funcional e com boa arquitetura)
  • não preciso me preocupar com questões de design visual (pelo menos não tanto quanto se a interface for em web). O visual é o do look and feel (e se tem uma função que já está implementada, é a troca de L&F’s no menu principal, a partir de uma lista com os L&F’s instalados ;))

Como complemento à questão do design, a interface web vira uma salada de linguagens: HTML, CSS, JavaScript… o objetivo é usar Java, compilado em .class! Acho que isso tudo tem lugar quando o objetivo é fazer um site mesmo, divulgação para o público. Já tenho site, passei o link. É básico, mas está lá e funciona. Feito em PHP mas com uma boa arquitetura (podem me bater, mas eu gosto mais de PHP do que de Java para fazer aplicaçòes web! E está na minha agenda aprender o Ruby on Rails, ô linguagenzinha boa dimái da conta o Ruby!)

O meu foco é resolver o problema da escola, e uma aplicação tradicional janelinha-menu-botão me permite ir + direto ao ponto.

[quote=MarkKnopfler]Fala-se muito mesmo que interfaces desktop estão sendo deixadas de lado em favor de interfaces web. E sim, a interface do meu sistema não será 100% desktop, mas onde se aplicar eu prefiro esta por n razões:

  • facilidade de construção se eu usar ferramentas como o WindowBuilder do Eclipse
  • não preciso me preocupar com questões de “design” (pelo menos não tanto quanto se a interface for em web). O visual é o do look and feel (e se tem uma função que já está implementada, é a troca de L&F’s no menu principal, a partir de uma lista com os L&F’s instalados ;))

Como complemento à questão do design, a interface web vira uma salada de linguagens: HTML, CSS, JavaScript… o objetivo é usar Java, compliado em .class! Acho que isso tudo tem lugar quando o objetivo é fazer um site mesmo, divulgação para o público. Já tenho site, passei o link. É básico, mas está lá e funciona. Feito em PHP mas com uma boa arquitetura (podem me bater, mas eu gosto mais de PHP do que de Java para fazer aplicaçòes web! E está na minha agenda aprender o Ruby on Rails, ô linguagenzinha boa dimái da conta o Ruby!)

O meu foco é resolver o problema da escola, e uma aplicação tradicional janelinha-menu-botão me permite ir + direto ao ponto.[/quote]Então pq você cogitou VRaptor ou Spring MVC? :shock:

Particularmente eu sou bem mais produtivo com JSF do que com o WindowBuilder do Eclipse para Swing, não acredito que seria uma vantagem isso.

Concordo que é uma Jar a mais e tals, porem é um “jar” a mais, tabom se for usar o primefaces é dois, mesmo assim não é tanto assim…
Acho que hoje em dia, com esse servidores que existem ai… essa questão de uma aplicação “pesada” teria mais “peso” alguns anos atras, claro não é para Generalizar…

Realmente para quem quer focar em java, mecher com HTML, CSS, JS é um saco, mais eu já fiz uma aplicação considerada grande apenas com JSF e PrimeFaces “puro”
ou seja, não fiz nada na unha, deixei por conta dos componentes do prime…

[quote=ErickMacedo][QUOTE]
já faz parte do Java SE, ou seja, nada de bibliotecas ou peso extra na aplicação (eu ainda acho engraçado como se usam trocentas bibliotecas para se fazer uma app java funcional e com boa arquitetura)
[/QUOTE]

Concordo que é uma Jar a mais e tals, porem é um “jar” a mais, tabom se for usar o primefaces é dois, mesmo assim não é tanto assim…
Acho que hoje em dia, com esse servidores que existem ai… essa questão de uma aplicação “pesada” teria mais “peso” alguns anos atras, claro não é para Generalizar…[/quote]A maioria das pessoas que reclamam do “peso” do JSF que vi até hoje não sabiam como utilizá-lo.

Tem gente que acha que JSF é simples e fácil de utilizar como um Servlet da vida, aí faz um cocô de código e põe a culpa no JSF. tsc

Acho que esse é o problema mais comum do programadores que usam JSF , saiu colocando componente em cima de componente e só pq funcionou acha que está bom…sem ao menos intender o ciclo de vida do faces .

Eu nunca tive problema com JSF, e sempre ficou bem rápido os sistemas…alem de ser ótimos para sistemas que querem ter as mesmas “caracteristicas” de um Desktop que é o caso do nosso amigo

Porque possivelmente terá alguma coisa acessível pela web (ex.: serviços aos alunos).

Com relação ao peso da aplicação, se eu fizer com EJB (que já falaram que é uma boa escolha), vou ter o servidor de aplicação (Glassfish, JBoss, sei lá). Se eu fizer com o Spring (container, Remote, integração com Hibernate, etc.), aí dá-lhe JAR! É uma opinião nesse sentido que eu quero. Permitam-me detalhar melhor:

  • Priorizarei interface Desktop, a interface já está compilada, o servidor nem terá o trabalho de gerar HTML. Se eu resolver disponibilizar algo para os alunos em web, acho que posso fazer na forma de webservices (ex.: REST) e meu PHPzão acessa os serviços :wink:
  • Leveza: o que é mais leve, os jars do Spring ou o servidor Java EE com EJB?
  • Curva de aprendizado: comprei o livro de Spring do Kico, gostei d+++, mas queria algo sobre o Remote. Baixei a apostila de EJB da K-19 e vou estudá-la. Lembrem-se que estou fazendo isso para aprender como se faz na ralação mesmo!

Porque possivelmente terá alguma coisa acessível pela web (ex.: serviços aos alunos).[/quote]Então por que você descartou o JSF de bate pronto falando que queria o Swing? O.o

Não to entendendo… :shock:

Não descartei não, se eu resolver colocar algo na web posso usar sem problemas.
Mas uma coisa de cada vez, primeiro os módulos gerenciais.

Tô feliz d++++++++++++++++++++++++++
Já desenvolvo em java “normalzinho”, hj fiz meu primeiro EJB funcionar (bichim lento da p********)

[quote=MarkKnopfler]Não descartei não, se eu resolver colocar algo na web posso usar sem problemas.
Mas uma coisa de cada vez, primeiro os módulos gerenciais.

Tô feliz d++++++++++++++++++++++++++
Já desenvolvo em java “normalzinho”, hj fiz meu primeiro EJB funcionar (bichim lento da p********)[/quote]Eu sempre usei e não achei lento não. [=

Cara, você não deve ter feito alguma “caca” ai rsrs

não é lentoo…

Vamos lá, alguns comentários que podem te ajudar.

Minha esposa tem uma escola, mas o negócio dela é um pouco diferente… é uma escola de reforço, sendo assim nenhum dos projetos como o SAGU atendiam… na verdade… até atendem, mas o objetivo de fazer um sistema foi otimizar os processos dela, igual o negócio dela, então desenvolvi um sistema novo que hoje ajuda, pois se eu usasse algo de escola padrão, talvez estivesse atrapalhando!
Fiz em web pois ela precisa acessar de diversos lugares diferentes… também o operacional do sistema é baixo, não é algo que a pessoa fique o dia todo usando.
Fiz o mais simples possivel, usei JSP/Servlet, usei HTML/CSS para as telas… usei DWR para ajax e programei em javascript/jquery… o resultado final era querer ter uma interface leve e rapida que rodasse até mesmo do celular com conexões lentas! Deu um pouco de trabalho mas não me arrependi…
Embora tenha feito MVC, não fiz distribuido pois essa necessidade não existe hoje e se vier a existir vejo que será o caso de rever o sistema como um todo e talvez até mesmo refazer do zero. No momento busquei algo simples que pudesse manter de forma barata, com hospedagem barata, etc.
Usei Eclipse e Mysql, mais nada… desenvolvi tudo em linux!

Para projetos Desktop já usei WindowBuilder e é muito bom. Entretanto telas complexas e dinâmicas sempre precisam ser feitas na unha, independente da tecnologia. Usamos SWT aqui na empresa e recomendo… é muito mais leve que swing… fiz testes de aplicativos pequenos (POC) em .NET com C# e WindowsForms… em java com SWT, Java com Swing, VB, C++ e consegui resultados excelentes em SWT comparados até mesmo com C++ (são sistemas de acesso a banco de dados, ok… dependendo da necessidade teria de ser de qualquer jeito em C++), e ainda com a vantagem de ser multiplataforma, embora não seja algo nativo do Java como Swing, é algo de peso quando dizer que é o que o Eclipse usa. A unica coisa que ficou maior no Java foi o consumo de memória, incomparável com o C++ e até mesmo com a versão .NET, entretanto, o tempo de resposta foi o mesmo. Como era um sistema corporativo e multiplataforma era um diferencial, optamos pelo SWT e não nos arrependemos.

Ah por ser simples, muitos falaram, por que não fez em PHP… confesso que tentei… e no começo o objetivo era mesmo fazer em PHP, porém por mais simples que fosse o sistema e pequeno, as regras de negócio são complexas e logo no começo o PHP começou a ficar confuso… dificil de dar manutenção… até mesmo de concluir a implementação das regras… na minha opnião, tipagem dinâmica se torna uma dor de cabeça tremenda, dependendo das regras que tem de implementar. Mudei para o Java e não me arrependi… fiz em 2 dias o que tinha demorado 1 semana para fazer em PHP e logo o sistema estava pronto, funcionando em Java.

[quote=ErickMacedo]Cara, você não deve ter feito alguma “caca” ai rsrs

não é lentoo…[/quote]

O que ficou lento foi só a classinha de HelloWorld, com sua interface remota e sua classe cliente usando InitialContext. Não fiz praticamente “nada”.

Deve-se considerar que meu notebook é um Celeron 1.3 comprado em 2004 ou 2005 (nem era meu), cuja memória inicial era 256MB (hj está com 1GB). GlassFish + Eclipse + Aplicação distribuída não tem o direito de ficar lenta nessa configuração? Feito em Delphi 7 com DataSnap fica levíssimo, mas eu quero uma arquitetura orientada a objetos, não a dados.

Estranho… aqui com EJB 3.1 fica muito rapidoo… nem percebo que estou usando EJB…

deve ser o seu PC rsrsr

a diferença entre ejb ou spring quanto a desempenho ao que eu percebo é pouca…

claro que a primeira vez que você acessa o ejb vai ser lento, mas nas próximas vai de boa…

[quote=maior_abandonado]a diferença entre ejb ou spring quanto a desempenho ao que eu percebo é pouca…

claro que a primeira vez que você acessa o ejb vai ser lento, mas nas próximas vai de boa…[/quote]

Seu argumento faz sentido, deve ser porque eu ralei um pra achar o nome JNDI (nunca tinha mexido com isso, dá-lhe coisa nova :cry: ) e toda hora o Eclipse ficava fazendo o redeploy do danado rsrsrsrsrsr.