Recomendação para linguagem com alta produtividade

6 respostas
F

Oi gente, atualmente trabalho com Java, utilizando Hibernate e JSF, porém estou achando um pouco lento o desenvolvimento(ainda sou novato, tenho apenas 1 de experiência na área como profissional), falo isso pq hj levei cerca de 2 horas e meia pra poder fazer 4 telas de CRUD relativamente simples, bom não sei se sou eu que sou lento devido minha inexperiência e o ritmo de trabalho na empresa que é bem tranquilo ou se realmente poderia usar alguma linguagem que tivesse uma produtividade maior.
Já ouvi falar em Ruby, Python, Node, ExtJS(se não me engane Node e ExtJS são frameworks), porém não sei se conseguiria ter uma produtividade maior usando outra linguagem, ja conheço PHP(mas não conheço nenhum framework a fundo), mas o Java foi adotado na empresa por decisão do meu chefe, deve ser pq é uma linguagem mais confiavel que PHP

Alguém tem alguma recomendação, e caso tenha, por favor, fale tbm

6 Respostas

emanuelCruz

Grails.
Como roda na JVM, tens como aproveitar o codigo Java já existente.

http://www.itexto.net/devkico/?page_id=1016

A

Eu acredito que antes de resolver um problema você precisa antes descobrir qual é exatamente o problema.
(Parece óbvio, mas a maioria não faz isso).

O primeiro passo é você descobrir o que atrapalha sua produtividade:

  • Teve que escrever o mesmo código várias vezes?
    Será que não dá pra isolar pontos comuns e dá próxima vez reaproveitar?

  • Faltam recursos na linguagem para fazer o que você quer?
    Será que não tem um padrão dentro da linguagem para atingir esse resultado?

  • Você não sabe como implementar a solução de certos problemas?
    Será que não precisa estudar Java mais a fundo?

Enfim, fica complicado dar uma sugestão sensata, sem realmente saber a origem do problema.

Tem muitas opções de linguagens hoje que prometem ser mais poderosas, mais produtivas e milhares de benefícios.
Mas um mau programador vai ser ruim em qualquer uma delas. (Não estou dizendo que é seu caso)

fantomas

AbelBueno:
Eu acredito que antes de resolver um problema você precisa antes descobrir qual é exatamente o problema.
(Parece óbvio, mas a maioria não faz isso).

O primeiro passo é você descobrir o que atrapalha sua produtividade:

  • Teve que escrever o mesmo código várias vezes?
    Será que não dá pra isolar pontos comuns e dá próxima vez reaproveitar?

  • Faltam recursos na linguagem para fazer o que você quer?
    Será que não tem um padrão dentro da linguagem para atingir esse resultado?

  • Você não sabe como implementar a solução de certos problemas?
    Será que não precisa estudar Java mais a fundo?

Enfim, fica complicado dar uma sugestão sensata, sem realmente saber a origem do problema.

Tem muitas opções de linguagens hoje que prometem ser mais poderosas, mais produtivas e milhares de benefícios.
Mas um mau programador vai ser ruim em qualquer uma delas. (Não estou dizendo que é seu caso)

Parabéns por pensar assim, concordo plenamente.

flws

F

AbelBueno:
O primeiro passo é você descobrir o que atrapalha sua produtividade:

  • Teve que escrever o mesmo código várias vezes?
    Será que não dá pra isolar pontos comuns e dá próxima vez reaproveitar?

  • Faltam recursos na linguagem para fazer o que você quer?
    Será que não tem um padrão dentro da linguagem para atingir esse resultado?

  • Você não sabe como implementar a solução de certos problemas?
    Será que não precisa estudar Java mais a fundo?


No meu caso até agora eu consegui implementar a solução para todos os problemas q tive.

Até o momento não faltaram recursos q eu precisasse(que a linguagem não tinha) para fazer algo.

O que realmente acontece é que acho q escrevo código repetido demais, eu uso template(facelets) e acho q já consegui reduzir bastante a duplicação de código das minhas views, porém ainda acho q escrevo código repetido nos meus ManagedBeans, e não sei como fazer para reaproveitar.

Eis um exemplo de dois managedBeans que uso para fazer o 2 cruds diferentes

Posse.java

@ManagedBean
@ViewScoped
public class GravaPosse implements CRUD, Serializable{

    private Posse posse;
    
    public GravaPosse() {
        PesquisaTudo.setSuaListaPesquisa(null);
        posse = new Posse();
    }
    
    public void editar()  {
        String id = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id");        
        Session sessao = HibernateUtil.getSession();
        //seleciona cidade baseada no id
        Posse listagem_query = (Posse) sessao.get(Posse.class, new Integer(id));
        posse.setPos_id(listagem_query.getPos_id());
        posse.setPos_nom(listagem_query.getPos_nom());
        sessao.close();

    }
    
    private transient Session sessao;// = CriadorDeSessaoNovo.getSession();
    private transient Transaction tx;// = sessao.beginTransaction();

    public List<Posse> getPosses(){
        Session sessao = HibernateUtil.getSession();
        Criteria listagem_query = sessao.createCriteria("br.salesianos.modelo.Posse").
                addOrder(Order.asc("pos_nom"));
        List<Posse> lista = (listagem_query.list());
        sessao.close();
        return lista;
    }
    
    public void gravar() {
        sessao = HibernateUtil.getSession();
        tx = sessao.beginTransaction();
        if(posse.getPos_id()==0){
            posse.setPos_id(null);
        }
        try {

            sessao.saveOrUpdate(posse);
            tx.commit();
            sessao.close();            
            FacesContext.getCurrentInstance().addMessage("Form:gravar", new FacesMessage("Informações gravadas com sucesso!"));
            Limpar.refresh();
        } catch (Exception erro) {
            System.out.println("Problema : " + erro);
            tx.rollback();
            sessao.close();
            FacesContext.getCurrentInstance().addMessage("Form:gravar", new FacesMessage("Falha ao gravar informações!"));
        }
    }

    public void excluir() {
        sessao = HibernateUtil.getSession();
        tx = sessao.beginTransaction();
        try {
            
            //pais.setPai_id(getPai_id());

            sessao.delete(posse);

            tx.commit();
            sessao.close();            
            FacesContext.getCurrentInstance().addMessage("Form:excluir", new FacesMessage("Informações excluídas com sucesso!"));
            Limpar.refresh();

        } catch (Exception erro) {

            System.out.println("Problema : " + erro);
            tx.rollback();
            sessao.close();
            FacesContext.getCurrentInstance().addMessage("Form:excluir", new FacesMessage("Falha ao excluir informações!"));
        }
    }

Atividade.java

@ManagedBean
@ViewScoped
public class GravaAtividade implements CRUD, Serializable{
    
    private Atividade atividade;

    public GravaAtividade() {
        PesquisaTudo.setSuaListaPesquisa(null);
        atividade = new Atividade();        
        
    }
    
    private transient Session sessao;
    private transient Transaction tx;
    
    public List<Atividade> getAtividades(){
        sessao = HibernateUtil.getSession();
        Criteria listagem_query = sessao.createCriteria("br.salesianos.modelo.Atividade").
                addOrder(Order.asc("ati_nom"));
        List<Atividade> lista = (listagem_query.list());
        sessao.close();
        return lista;
    }
    
    public void editar()  {        
        String id = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id");        
        Session sessao = HibernateUtil.getSession();
        //seleciona cidade baseada no id
        Atividade listagem_query = (Atividade) sessao.get(Atividade.class, new Integer(id));
        atividade.setAti_id(listagem_query.getAti_id());
        atividade.setAti_nom(listagem_query.getAti_nom());
        sessao.close();

    }
    
    public void verificar(){
        System.out.println(""+atividade.getAti_id()+"---"+atividade.getAti_nom());
        
    }

    public void gravar() {    
        sessao = HibernateUtil.getSession();
        tx = sessao.beginTransaction();        
        
        if(atividade.getAti_id()==0){
            atividade.setAti_id(null);
        }
        try {                       
            sessao.saveOrUpdate(atividade);
            //HibernateDAO<Atividade> dao=new HibernateDAO<Atividade>(Atividade.class, sessao);
            //dao.salvar(atividade);
            tx.commit();
            sessao.close();            
            FacesContext.getCurrentInstance().addMessage("Form:gravar", new FacesMessage("Informações gravadas com sucesso!"));                        
            Limpar.refresh();
        } catch (JDBCException erro) {
            System.out.println("Problema : " + erro);
            tx.rollback();
            sessao.close();
            FacesContext.getCurrentInstance().addMessage("Form:gravar", new FacesMessage("Falha ao gravar informações!"));
        } catch (Exception erro) {
            System.out.println("Problema : " + erro);
            tx.rollback();
            sessao.close();
            FacesContext.getCurrentInstance().addMessage("Form:gravar", new FacesMessage("Falha ao gravar informações!"));
        }
    }
   
    public void excluir() {
        sessao = HibernateUtil.getSession();
        tx = sessao.beginTransaction();

        try {            

            sessao.delete(atividade);

            tx.commit();
            sessao.close();            
            FacesContext.getCurrentInstance().addMessage("Form:excluir", new FacesMessage("Informações excluídas com sucesso!"));
            Limpar.refresh();

        } catch (Exception erro) {

            System.out.println("Problema : " + erro);
            tx.rollback();
            sessao.close();
            FacesContext.getCurrentInstance().addMessage("Form:excluir", new FacesMessage("Falha ao excluir informações!"));
        }
    }

    /**
     * @return the atividade
     */
    public Atividade getAtividade() {
        return atividade;
    }

    /**
     * @param atividade the atividade to set
     */
    public void setAtividade(Atividade atividade) {
        this.atividade = atividade;
    }

ps:eu havia perguntado sobre outas linguagens, pois já ouvi falar que Ruby é capaz de criar cruds básicos rapidamente, enquanto eu levo muito tempo pra fazer isso em java

l3ug1m

ja que “tais no mundo Java” o grails é uma ótima opção para o ruby

F

Ja tinha ouvido falar de Grails, mas não faço ideia do que seja, vou dar uma pesquisada depois, vlw

Criado 29 de novembro de 2011
Ultima resposta 30 de nov. de 2011
Respostas 6
Participantes 5