Java x Produtividade

6 respostas
Fox_McCloud

Boa tarde a todos…

Era um dia perfeito, nem calor nem frio, uma brisa boa no ar, meu humor em dia… até que…

No trabalho me passaram uma demanda para um JTree com JCheckBox…

Cá estou há duas horas pesquisando, encontrando uma solução mais gambiárrica que a outra… e decepcionantemente não existe esse componente pronto no Java (apesar de o Swing ser velho já). Eu não quero criar um mega framework, só adicionar um checkbox ao lado dos nós-folha e obter o estado (selecionado ou não) quando eu pego o nó no listener…

Sim, estou usando Swing em um Applet porque a aplicação web precisa em uma tela possuir controles para que o usuário faça a digitalização (escaneamento) de documentos para o fluxo de processo. A melhor forma de fazer isso via Java é através de um Applet assinado que tem acesso aos recursos da máquina cliente onde o Scanner estará instalado.

Bom, eu vou pular aqui o pesadelo que foi criar um Wrapper para acessar o Twain nativamente, não quero escrever um livro (não agora).

Daí a gente acha que vai ter esperanças, aparece um JavaFX, eu compro o JavaFX in Action… e olha que interessante… em Java FX não existem componentes padrão, apenas wrappers para componentes Swing existentes, com uma ameaça de que isso não seja suportado em próximas versões…

Meu colega aqui do lado tá se matando com uma JTable…

Fora isso, fica sempre aquela promessa… Ah, com JavaFX será possível desenvolver visualmente… só que nenhuma ferramenta (Eclipse, NetBeans, o que for) tem um suporte completo e eficaz pra isso…

Visual Basic pode ser uma bosta, mas se eu quero uma árvore com nós com checkboxes eu só escolho na palheta e arrasto…

Micro$oft pode ser o que for, mas na hora de produzir só tem uma ferramenta, a deles, e é muito boa. Qualquer componente que eu queira está ao alcance de um clique…

Tudo bem, Java é poderoso, dá pra fazer milhões de coisas, etc, etc…

MAS nem sempre eu quero criar mega-frameworks, mega-infras… normalmente eu só quero fazer o mesmo bom e velho crud de sempre, melhorias incluem repositórios de conteúdo e gerenciadores de processo, mas a interface, validações, regras de negócio são sempre a MESMA coisa: obter, tratar e persistir dados.

SIMPLESMENTE ISSO.

Mas o Java falha terrivelmente ao atender às demandas simples. Usar um componente em dez minutinhos pra criar alguma coisa. NÃÃÃÃÃO, tem orientação a aspecto, inversão de dependência, framework web, tudo uma maravilha… toca eu a ficar semanas configurando milhões de XMLs pra todos esses recursos fantásticos que vão o que? Servir pra obter, tratar e persistir dados, como sempre.

Ok, então fui mexer com Java 2D e 3D… Adivinha? Graphics2D é LENTO. Graphics3D tem o jeitão do Java de ser (toca a estudar meses pra dominar tudo)… ou então uso uma biblioteca JAI (que é “da galera”) com vários recursos faltando porque a galera tá trabalhando neles… uso uma biblioteca JOGL (da “galera” também), que há algum tempo trocou de mãos e mudou tudo, nem sei direito como fazer o download mais, e nem pensar em os exemplos antigos funcionarem com as versões novas…

Meu… nem todo projeto consiste em um laboratório de pesquisa e desenvolvimento com 80% do tempo disponível para estudo e pesquisa… eu diria até (quem diria) que 99,5% dos projetos consistem em PRODUZIR para demandas conhecidas.

Poderoso? Eu acho que sim… SIMPLES? Até hoje não, e fico frustrado a cada vez que percebo que NÃO VAI ficar simples…

Daí cai naquela… todo mundo usa o Struts 1 mesmo já que as empresas notaram que todo mundo já sabe usar isso mesmo, daqui a pouco troca pra Spring… mas não tem solução universal, interface única, componentes simples de usar…

Tô até pensando em repensar meus conceitos sobre o Java… MESMO… e trabalho com ele há anos, sou certificado, etc, etc, etc…

Bom, se alguém sabe um jeito SIMPLES E RÁPIDO pra adicionar checkbox em folha de JTree eu agradeço profundamente.

Abraços.

6 Respostas

Igor_Novaes

Olá meu caro!

Por forte coincidencia eu havia aberto o forum a procura de informações atualizadas sobre Java + JSF + Struts, e me peguei lendo seu depoimento.

Eu tb sinto-me frustrado frente a desenvolver com o java (o que nunca fiz profissionalmente, apenas como estudante e para projetos pessoais). Eu, que tenho minha formação em programação com Delphi(que não é simplemente orientada a cliques) e trabalho com ele a uns 5 anos, sempre procurei migrar minhas atividades para o java mas sempre me deparo com situações como a sua.

Eu não estou jogando pedra no Java, que é uma excelente linguagem de programação e com mercado gigante pela frente. Já ensinei java para iniciantes e aprovo a linguagem para desenvolvimento web (com certas restrições - depende do projeto e do cliente).

Apenas digo que o java precisa evoluir na questão da produtividade, justamente a questão que você colocou aqui. O cliente está batendo na porta cobrando o produto e nós desenvolvedores tentando descobrir coisas que poderiam estar bem nas nossas mãos (o que justamente vamos fazer nas nossas pesquisas que nunca duram menos que um dia).
Já me disseram: Ah… mas o java lhe dá recursos pra você customizar os componentes como quiser. Beleza, mas eu não temos tanto tempo assim.

Entrei apenas para concordar com seu depoimento e espero que consiga concluir sua tarefa com sucesso.
Essa galera do GUJ é forte!!!

Abraço…

E

Concordo…

Não uso swing, mas vê se eesses links ajudam:

[url]

http://www.guj.com.br/posts/list/118995.java

http://www.coderanch.com/t/422715/GUI/java/Code-JTree-checkbox

http://forums.sun.com/thread.jspa?threadID=5125710

http://www.google.com.br/#hl=pt-BR&q=code+checkbox+with++JTree++swing&aq=f&aqi=&aql=&oq=&gs_rfai=&fp=a866f2f9e1e61dda

http://www.google.com.br/#hl=pt-BR&q=+example++checkbox+with++JTree++swing&aq=f&aqi=&aql=&oq=&gs_rfai=&fp=a866f2f9e1e61dda

[/url]

OliveirakunJava

Acho que o grande problema aqui não é nem a linguagem em si mas a forma como ela é utilizada. As pessoas deveriam começar a perceber que linguagens são apenas “ferramentas” e que existe uma ferramenta certa para se resolver determinado problema. O que estou acostumado a ver é que as pessoas aprendem uma linguagem e usam ela pra fazer tudo, não importa se é desktop, web, crud, etc. Desenvolver aplicações desktop em Java pra mim só faz sentido se a aplicação tiver que ser multiplataforma, para aplicações que irão rodar apenas no windows, a melhor alternativa é utilizar C# que é muito mais produtivo para esse tipo de aplicação e ainda oferece várias apis para utilização de recursos nativos do sistema. Se vc vai fazer uma aplicação crud web , é mais produtivo utilizar linguagens dinâmicas como Ruby ou Python, se vai desenvolver pra dispositivos móveis vc pode usar Java caso a aplicação precise rodar em aparelhos diferentes ou utilizar a linguagem nativa do aparelho em questão(como C para Symbian ou C# pra Windows Mobile) caso vc precise utilizar todos os recursos que o aparelho oferece. Não existe “uma linguagem perfeita”, eu sei que quando só sabemos uma linguagem e o problema “é pra ontem” iremos utiliza-lá mesmo que não seja a melhor opção, mas cabe a nós também nos aperfeiçoar-mos aprendendo novas linguagens ao invés de ficar apenas reclamando das que ja conhecemos :wink:

Andre_Brito

Amém! Penso da mesma forma, apesar de trabalhar e gostar de Java.

Mudei um pouco minha opinião depois que conheci o VRaptor 3 e o PlayFramework, ambos para web. JEE 6 agora até veio com um intuito de trocar os xmls de configuração por annotations. Vamos ver no que dá. Spring nunca vi a fundo, mas não duvido que tenha várias configurações por cima dele.

Mas pra Swing? Só passando horas e mais horas fazendo os próprios componentes. Um pessoal na empresa onde trabalho passou mais de mês lidando em cima dos componentes pra Swing que temos hoje… Hoje temos uma certa versatilidade, mas valeu a pena? Eu tenho as minhas dúvidas… 1 mês sem produzir algo para o sistema em si é MUITO tempo. E tudo pra que? Pra mostrar que o Java pode ser igual e melhor que o Delphi, VB e coisarada.

Me desculpem, tem gente que gosta de Swing, gosta de usar o editor do NetBeans, o VE, o SD ou po JFormsDesigner; mas eu acho uma bela de uma porcaria. Trabalharia com eles se fosse obrigado. Se tivesse opção, faria tudo na mão.

De vez em quando eu meto a massa em Swnig, nos meus projetos pessoais. Acabo mais aprendendo como funciona o Swing e os seus layouts do que produzindo. E até hoje quero tirar um tempo pra fazer meus próprios componentes. Um dia a gente chega lá. E, se Deus quiser, o código vai ficar aberto. Tem uma empresa que já faz isso… a SwingLabs. A proposta é boa: tentar deixar o Swing mais amigável.

Fox_McCloud

everjava:
Concordo…
Não uso swing, mas vê se eesses links ajudam:
http://www.guj.com.br/posts/list/118995.java
http://www.coderanch.com/t/422715/GUI/java/Code-JTree-checkbox
http://forums.sun.com/thread.jspa?threadID=5125710
http://www.google.com.br/#hl=pt-BR&q=code+checkbox+with++JTree++swing&aq=f&aqi=&aql=&oq=&gs_rfai=&fp=a866f2f9e1e61dda
http://www.google.com.br/#hl=pt-BR&q=+example++checkbox+with++JTree++swing&aq=f&aqi=&aql=&oq=&gs_rfai=&fp=a866f2f9e1e61dda

Já vi esses e muitos outros, rs…

Bom, a idéia foi abortada, utilizaremos seleção múltipla e pronto XD

Concordo com as opiniões expressas.

Vejam, no momento o pessoal da empresa está escolhando uma opção de RIA (Rich Internet Application).

Defendi por algum tempo o JavaFX (o JavaFX tem até herança múltipla, e não tem tipos primitivos, apenas objetos), mas sinceramente… se o Flex ou o Silverlight forem mais produtivos eu vou fazer pé firme por eles!

Uma coisa é eu ser um artista e querer esculpir uma mesa em um projeto de seis meses pra colocar na minha sala (Java)…

OUTRA coisa bem diferente é eu ser dono de uma loja de móveis com demanda pra cem ou mais mesas por dia (outros)…

Fora que hoje em dia você pode criar a mesa em um Maya da vida e esculpi-la a em madeira com laseres ou tornos eletrônicos…

Se for assim então eu deveria ser um artista Java cobrando 200 reais a hora pra gastar um ano criando componentes artisticamente (e manualmente) elaborados pra fazer uma interface única…

Não é a realidade do mercado.

j0nny

Fox McCloud:
everjava:
Concordo…
Não uso swing, mas vê se eesses links ajudam:
http://www.guj.com.br/posts/list/118995.java
http://www.coderanch.com/t/422715/GUI/java/Code-JTree-checkbox
http://forums.sun.com/thread.jspa?threadID=5125710
http://www.google.com.br/#hl=pt-BR&q=code+checkbox+with++JTree++swing&aq=f&aqi=&aql=&oq=&gs_rfai=&fp=a866f2f9e1e61dda
http://www.google.com.br/#hl=pt-BR&q=+example++checkbox+with++JTree++swing&aq=f&aqi=&aql=&oq=&gs_rfai=&fp=a866f2f9e1e61dda

Já vi esses e muitos outros, rs…

Bom, a idéia foi abortada, utilizaremos seleção múltipla e pronto XD

Concordo com as opiniões expressas.

Vejam, no momento o pessoal da empresa está escolhando uma opção de RIA (Rich Internet Application).

Defendi por algum tempo o JavaFX (o JavaFX tem até herança múltipla, e não tem tipos primitivos, apenas objetos), mas sinceramente… se o Flex ou o Silverlight forem mais produtivos eu vou fazer pé firme por eles!

Uma coisa é eu ser um artista e querer esculpir uma mesa em um projeto de seis meses pra colocar na minha sala (Java)…

OUTRA coisa bem diferente é eu ser dono de uma loja de móveis com demanda pra cem ou mais mesas por dia (outros)…

Fora que hoje em dia você pode criar a mesa em um Maya da vida e esculpi-la a em madeira com laseres ou tornos eletrônicos…

Se for assim então eu deveria ser um artista Java cobrando 200 reais a hora pra gastar um ano criando componentes artisticamente (e manualmente) elaborados pra fazer uma interface única…

Não é a realidade do mercado.

Vai sem medo no Flex cara, usamos aqui na empresa, e é fantástico, acredito que vai encaixar perfeitamente nos seus requisitos.

Criado 13 de agosto de 2010
Ultima resposta 14 de ago. de 2010
Respostas 6
Participantes 6