Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Obama

Como definir a melhor "tecnologia" para um projeto ?

Recommended Posts

Bom pessoal, vou passar um breve resumo meu pois acho que no final contará para ajudar a definir a melhor solução.

Sou desenvolvedor Java. Trabalhei a algum tempo atrás com Servlets e Jsp, tive alguma experiência com Struts(1.X) e Hibernate. Porém me desliguei do meu último trabalho(pois a faculdade estava ficando de lado), e estou como freelancer desde então, e passei o ultimo ano desenvolvendo aplicações em Swing.

Porém agora pretendo voltar ao mercado e coincidiu de aparecer um projeto perfeito (SW simples e prazo largo)para que eu possa voltar a ter contato com J2ee e as tecnologias mais usadas atualmente.

 

Gostaria então de pedir a opinião de vcs para definir que tipo de tecnologia eu deveria priorizar, já que este projeto será uma oportunidade de me dedicar a uma ou mais tecnologias e com isso poder me re-lançar ao mercado de trabalho com um curriculo mais "atual".

O Sistema é simples, são basicamente alguns Cruds com geração de relatórios.

O que vcs usariam : Hibernate, JPA, JSF, o bom e velho JSP e Servlets, Struts ... ?

Ps:Gosto de trabalhar com Netbeans.

 

Muito grato pela ajuda desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, Obama...

Como você, também estou iniciando um novo projeto. Só que no meu caso o projeto é pessoal, é meu. E tenho todo o tempo necessário para investir neurônios nele, rs...

Bom, definir uma "tecnologia" para um projeto, dependendo do projeto, não é nada tão fácil, e também discordo de que não seja trivial.

Existe uma área específica para isso em fábricas de software e grandes empresas, a Arquitetura de Soluções, onde se procura definir quais tecnologias e melhores práticas para os projetos de TI. Apesar de eu não ser fã dos produtos do tio Bill, segue um link de webcasts gratuitas da Microsoft sobre a definição de soluções em projetos de desenvolvimento de software: http://msdn.microsoft.com/pt-br/dd366112.aspx

No caso de um simples CRUD com alguns relatórios, eu procuraria simplificar o máximo, caso fosse uma solução que exigisse pouco tempo de desenvolvimento. Usando Netbeans, optaria por JSF, uma vez que o plugin para JSF dessa IDE possui assistentes que praticamente fazem todo o CRUD pra você de forma automática, separando em camadas (MVC). Você pode incrementar detalhes depois, como pesquisa personalizada, e a adição de relatórios, com ferramentas como o iReport, e ainda personalizar a interface com HTML. Se você combinar JSF e Facelet, por exemplo, poderá desenvolver sua aplicação respeitando as normas W3C, com conceitos web2.0, uma vez que terá maior controle entre tags (X)HTML, CSS e JSF, estreitando a relação entre design e desenvolvimento. O Facelet ajuda na definição de templates da sua aplicação, facilitando o reuso (caixa-preta). Se você fosse usar Eclipse, aí minha dica seria Struts2, pela riqueza de iteração dos plugins para esse framework na IDE, basicamente.

Usaria ainda JPA com Hibernate.

Os relatórios você pode criar com tags JSP mesmo, mas eu prefiro usar o iReport para isso, por extender a facilidade nas opções de exportação dos relatórios e renderização de gráficos.

Tudo isso é mensurado pelo trio: custo, tempo e escopo.

Daí, a melhor forma de definir qual a melhor tecnologia é conhecendo a abrangência do projeto.

Um abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Obama,

 

O importante e entender as necessidade do cliente, tecnologia e o de menos atualmente.

Por exemplo, o framework Ofbiz oferece tecnicamente todas as necessidades para disponiblizar um ambiente funcional para o modelo de negocio.

 

Como havia comentado, cada vez menos o mundo precisa desenvolver software, enquanto ja existem framework funcionais para levantar o seu negocio rapidamente.

Olhe o conceito de Ofbiz e ganhe tempo!

 

So posso comentar, que essa sua preocupaçao se uso EJB, Hibernate, Struts, Java ect etc, e preocupaçao somente de programador bitolado e ultrapassado pelo tempo. O cliente nao quer saber disso, tudo gira em torno de dinheiro $$$.

E so podemos ter muito mais por menos custo e tempo, o cliente ira te adorar! Estamos numa nova ERA!

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Mto grato por sua atenção Senhor SPAMMER, mas não tenho interesse em lixo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Obama,

 

O importante e entender as necessidade do cliente, tecnologia e o de menos atualmente.

Por exemplo, o framework Ofbiz oferece tecnicamente todas as necessidades para disponiblizar um ambiente funcional para o modelo de negocio.

 

Como havia comentado, cada vez menos o mundo precisa desenvolver software, enquanto ja existem framework funcionais para levantar o seu negocio rapidamente.

Olhe o conceito de Ofbiz e ganhe tempo!

 

So posso comentar, que essa sua preocupaçao se uso EJB, Hibernate, Struts, Java ect etc, e preocupaçao somente de programador bitolado e ultrapassado pelo tempo. O cliente nao quer saber disso, tudo gira em torno de dinheiro $$$.

E so podemos ter muito mais por menos custo e tempo, o cliente ira te adorar! Estamos numa nova ERA!

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Spammer barato. Já basta toda a palhaçada que fez no GUJ, decidiu vir encher o saco aqui também?

 

Latest release 3.0.0 / 13 March 2004; 1793 days ago

Ou seja, vem o mané aqui, fazendo spam de uma ferramenta que não libera uma versão estável a 5 anos, e ainda vem dizer que é a "melhor" solução, ah dá licença.

 

Sem falar que usar um troço assim significa dar adeus aos generics, annotations, enums e todas as coisas boas que vieram no java 5, uma vez que esse OfPorcaria é mais antigo que tudo isso. E obviamente, tem aquelas toneladas de XML horrorosos que fazem você vomitar.

 

Data Layer

 

Data layer is responsible for database access, storage and providing a common data interface to the Business layer. Data is accessed not in Object Oriented fashion but in a "relational way". Each entity (represented as a row in the database) is provided to the business layer as a Generic Value. A generic value is not typified, so, fields of an entity are accessed by the column name.

 

Domain Layer

 

As consequence of the interface provided by the data layer, which only provides Generic Values representing table instances, which are table rows, there is not an OO domain model in Apache OFBiz. Therefore the domain model can be considered Anemic.

Java é uma linguagem OO. Programar não-OO em uma linguagem OO é no mínimo uma piada (de mau-gosto por sinal). Esses conceitos falidos criados por imbecis que não manjam nada de OO de tabela=classe e VOs inúteis só servem para deixar o seu projeto mais complexo, pois você não tem entidades unificadas por causa da normalização, o que trás aquelas gordas e desajeitadas classes de negócio que usam toneladas de código apenas para navegar nas tabelas. Além de ficar mais lento, pois tudo será carregado de forma lazy. Sem falar que o encapsulamento e a reusabilidade vão para o inferno.

E depois ainda vem o Marcio Duran lá no GUJ falando de DDD. Meu, vai ser cara-de-pau assim na PQP.

 

Quer programar de verdade usando coisas legais? Usa JPA e com entidades ricas e livre-se dos DAOs, BOs e VOs da vida. Invista na reusabilidade.

 

Quanto ao front-end, se você quiser fazer telas repetitivas e sempre parecidas, daí você usa algum programa lixo como OfBiz, Maker ou qualquer ferramentinha vomitadora de telinha. Se quiser fazer algo com qualidade, recomendo JSP+taglibs, VRaptor, Mentawai, ou se quiser até struts 2 (mas, pessoalmente, não gosto dele).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vlw pela ajuda Yanma. Deu para ver que ng tolera mais SPAMMERS, ainda mais de ferramentas lixo !!!

 

Agora sobre o tópico (que este imbecíl do OfASS quer disvirtuar novamente) eu tb compartilho de certo receio do uso de Struts, está certo que tive uma expriência ruim com o Struts 1.x e não com o 2 que dizem ter melhorado substancialmente.

 

 

O que acontece, tenho interesse em aprender a fundo algo que eu possa colocar em meu currículo para voltar ao mercado de trabalho.

Aconselha Hibernate ?

E qual Design Partner?

 

Obrigadão pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

JPA + Hibernate. Aconselho sim.

Se quiser pode ir até no hibernate puro mesmo. Mas, na minha opinião é melhor tentar usá-lo sempre por trás do JPA.

 

Quanto a Design Patterns, isso fica muito ligado ao que você vai fazer exatamente. Não dá para definir de antemão os design patterns a serem usados, esses são descobertos durante a arquitetura e/ou desenvolvimento.

 

Ou seja, você descobre os design patterns necessários, e não os define a priori.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, Obama...

Como você, também estou iniciando um novo projeto. Só que no meu caso o projeto é pessoal, é meu. E tenho todo o tempo necessário para investir neurônios nele, rs...

Bom, definir uma "tecnologia" para um projeto, dependendo do projeto, não é nada tão fácil, e também discordo de que não seja trivial.

Existe uma área específica para isso em fábricas de software e grandes empresas, a Arquitetura de Soluções, onde se procura definir quais tecnologias e melhores práticas para os projetos de TI. Apesar de eu não ser fã dos produtos do tio Bill, segue um link de webcasts gratuitas da Microsoft sobre a definição de soluções em projetos de desenvolvimento de software: http://msdn.microsoft.com/pt-br/dd366112.aspx

No caso de um simples CRUD com alguns relatórios, eu procuraria simplificar o máximo, caso fosse uma solução que exigisse pouco tempo de desenvolvimento. Usando Netbeans, optaria por JSF, uma vez que o plugin para JSF dessa IDE possui assistentes que praticamente fazem todo o CRUD pra você de forma automática, separando em camadas (MVC). Você pode incrementar detalhes depois, como pesquisa personalizada, e a adição de relatórios, com ferramentas como o iReport, e ainda personalizar a interface com HTML. Se você combinar JSF e Facelet, por exemplo, poderá desenvolver sua aplicação respeitando as normas W3C, com conceitos web2.0, uma vez que terá maior controle entre tags (X)HTML, CSS e JSF, estreitando a relação entre design e desenvolvimento. O Facelet ajuda na definição de templates da sua aplicação, facilitando o reuso (caixa-preta). Se você fosse usar Eclipse, aí minha dica seria Struts2, pela riqueza de iteração dos plugins para esse framework na IDE, basicamente.

Usaria ainda JPA com Hibernate.

Os relatórios você pode criar com tags JSP mesmo, mas eu prefiro usar o iReport para isso, por extender a facilidade nas opções de exportação dos relatórios e renderização de gráficos.

Tudo isso é mensurado pelo trio: custo, tempo e escopo.

Daí, a melhor forma de definir qual a melhor tecnologia é conhecendo a abrangência do projeto.

Um abraço.

Opa, sua msg apareceu misteriosamente aqui... hehehe .

Eu vi lá no outro fórum que você estava meio que com o mesmo problema que eu.

No meu caso eu sou péssimo na camada de apresentação, sempre onde trabalhei, eu ficava direto na camada de negócios e modelo.

Então tudo relacionado a isto será novidade p/ mim.

Não lembro de quase nada de JavaScript, em HTML com CSS sou um asno, além de não possuir bom gosto.

 

Essa aplicação que irei fazer é simples, mas será um desafio. Tenho criar um módulo de login onde terão uns 4 ou 5 tipos de usuários com diferentes permissões de acesso. Acho que essa será minha maior dificuldade no projeto. Não sei ainda uma solução elegante (tanto em organização do código tanto em perfomance) para dar start nisso. É minha primeira aplicação para um cliente final e do setor "comercial convencional".(Só trabalhei em telecom !!!)

Queria romper todas essas barreiras nesse projeto.

Nesse cenário o que me aconselha além de uma Neosaldina e Aspirina ?

 

 

Yanma, sobre este módulo de login que citei, você acha que devo persistir (literalmente) usando Hibernate e JPA ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, existem alguns frameworks para login, autorização e autenticação por aí. Inclusive um built-in nos JSP/Servlets (na verdade está no container).

 

Mas, muitas vezes uma autenticação mais simples é melhor, não sei qual é o seu caso.

 

Se quiser autenticação a mão, com hibernate e JPA, dá para fazer algo mais ou menos assim:

public Usuario fazerLogin(String login, String senha) throws ErroDeLoginException {
	Query q = entityManager.createQuery("from Usuario where login = :login and senha = :senha")
	q.setParameter("login", login);
	q.setParameter("senha", senha);
	try {
		return (Usuario) q.getSingleResult();
	} catch (NoResultException e) {
		throw new ErroDeLoginException("Login e/ou senha incorretos. Tente novamente.");
	}
}

Fazer a mão a parte de autenticação é simples. Mas, por outro lado a autorização vai ser relativamente trabalhosa.

 

Se preferir fazer via container, tem algumas tags naquele web.xml que servem para isso. Mas não lembro direito como é porque já tem tempo que vi isso. Por outro lado, você vai ter que fazer algumas configurações chatas (e não-portáveis) no container. A parte boa é que provavelmente só terá que fazer isso uma vez, e o seu código fica limpo dos detalhes da autorização e autenticação.

 

Há também frameworks específicos, aí tem que ver caso a caso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Foi mal pela demora pessoal. Tive que viajar.

BOm, sobre a questão, acho que o JSF e o Struts iriam me ajudar (ser a forma mais fácil e prática) para criar a navegações usando critério de permissão de usuário. Até o VisualJSF quebraria um bom galho qto a isso não acham ?

Agora, vale a pena quebrar a cabeça e usar Ajax ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.