Profissionais Java Fazem a interface "no Braço"?

Primeiro um pouco de backgroud sobre mim e porque tenho essa dúvida relativamente simples:

Trabalhei 2 anos como desenvolvedor desktop em Delphi e trabalho com desenvolvimento web a mais de 4 anos usando principalmente PHP…

Gosto muito de desenvolver para web, mas tenho interesse em qualquer coisa relativa a programação então conheço “de vista” diversas técnologias e esses dias estava fazendo alguns testes em JAVA,
fazendo hello world, conectando em banco , brincando com servlets etc… percebi que aparentemente as principais ferramenta de desenvolvimento Java são o Netbeans e o Eclipse e visto que num primeiro momento o Netbeans
permite que você desenhe a GUI enquanto no Eclipse você precisa fazer ela manualmente (vida longa a gridbag layout :P) o que me deixou curioso:

O Programador Java profissional comum, que desenvolve aplicativos desktop, em uma empresa “normal” faz a interface do aplicativo como? usando um editor visual ou no braço? qual é a IDE mais comum?
pergunto pelo paremetro “médio”, ou seja a maioria das empresa, porque no delphi por exemplo existe a possibilidade de se gerar a interface programaticamente, mas muitos desenvolvedores acham que isso é Voodoo…

PS: tem como mudar meu nick esse cadastro é meio antigo - de épocas mias negras da minha vida :stuck_out_tongue:

a versão Eclipse Indigo vem com Window Builder instalado

que você pode construir a interface gráfica pegando e soltando componentes, igual ao Delphi

Desenvolvo pra web mas o que eu ja vi pra desktop o netbeans é a ferramenta ideal pra desenhar as telas.

[quote=Str.Up.Icio]percebi que aparentemente as principais ferramenta de desenvolvimento Java são o Netbeans e o Eclipse e visto que num primeiro momento o Netbeans
permite que você desenhe a GUI enquanto no Eclipse você precisa fazer ela manualmente (vida longa a gridbag layout :P) o que me deixou curioso:

O Programador Java profissional comum, que desenvolve aplicativos desktop, em uma empresa “normal” faz a interface do aplicativo como? usando um editor visual ou no braço? qual é a IDE mais comum?
pergunto pelo paremetro “médio”, ou seja a maioria das empresa, porque no delphi por exemplo existe a possibilidade de se gerar a interface programaticamente, mas muitos desenvolvedores acham que isso é Voodoo…
[/quote]

Eu trabalhei 4 anos com swing quando comecei com java e só depois migrei para web. Eu acho fazer swing na mão um suicidio. É preciso entender a diferença entre o swing e os componentes drag-drop da vida. O Swing é uma API de infraestrutura , ou seja, vc não deve usá-lo diretamente. Vc deve criar sua própria bibilioteca à volta dele. Fazendo isso, é muito mais simples criar na mão. Na época eu crie um modelo que a partir de um xml criava a aplicação (inspirado no thinlet e no jsf). No final a única coisa que precisava codificar era o controlador do formulário. Sim, tive que criar uma classe de From que não vem defaul no swing, mas que ajudou muito a organizar as coisas. Toda a mecanica de navegação, janelas modais, etc. estava embutida no framework. Construir alguns componente que são de use comum como datepicker e um painel especial que continha outros paineis, mas era possivel modificar o como os papeis eram mostrados e podia alternar entre tab, acordion, stack, etc… para forms usava o FormLayout do JGoodies que é infinitamente melhor que qualquer gridbag, alias eu nunca uso grid bag.

Antes de java eu mexia com VB 6 e anteriores. A coisa me incomodava era ter que alinhar todos os componentes , mesmo como os anchors, era muito chato. O layoutmanager do swing permite controlar o posicionamento em runtime e de forma simples. Os IDE mágicos criam código automático e para mim isso é mau porque ha controle e não ha como melhorar o código. Pior, não ha como rastrear os problemas. Com uma biblioteca é bem simples pq é estruturado.

Eu sinceramente acho que as pessoas em geral não tiveram o treinamento necessário ou usaram o tempo necessário o swing para o achar chato e criarem bibliotecas. O pessoal do Spring já pensou nisso. Em web, existe milhares de frameworks, porque exactamente milhares de pessoas usam todos os dias e acham usar servlet muito chato e ai inventam algum framework. Da mesma forma que ninguém é loco de usar sevlet puros, tb ninguem deveria usar swing puro.

Então, não é bem fazer no braço, é criar uma biblioteca que permita criar no braço simples e rápido. IDE só é boa para uma coisa : prototipagem. Mas uma folha de papel faz o mesmo efeito e é mais simples de usar.

[quote=Str.Up.Icio]Primeiro um pouco de backgroud sobre mim e porque tenho essa dúvida relativamente simples:

Trabalhei 2 anos como desenvolvedor desktop em Delphi e trabalho com desenvolvimento web a mais de 4 anos usando principalmente PHP…

Gosto muito de desenvolver para web, mas tenho interesse em qualquer coisa relativa a programação então conheço “de vista” diversas técnologias e esses dias estava fazendo alguns testes em JAVA,
fazendo hello world, conectando em banco , brincando com servlets etc… percebi que aparentemente as principais ferramenta de desenvolvimento Java são o Netbeans e o Eclipse e visto que num primeiro momento o Netbeans
permite que você desenhe a GUI enquanto no Eclipse você precisa fazer ela manualmente (vida longa a gridbag layout :P) o que me deixou curioso:

O Programador Java profissional comum, que desenvolve aplicativos desktop, em uma empresa “normal” faz a interface do aplicativo como? usando um editor visual ou no braço? qual é a IDE mais comum?
pergunto pelo paremetro “médio”, ou seja a maioria das empresa, porque no delphi por exemplo existe a possibilidade de se gerar a interface programaticamente, mas muitos desenvolvedores acham que isso é Voodoo…

PS: tem como mudar meu nick esse cadastro é meio antigo - de épocas mias negras da minha vida :P[/quote]

Eu utilizo o netbeans para aplicações desktop, e para aplicações web o Eclipse, O Eclipse tem o mesmo potencial do NetBeans, a diferença é que você precisa instalar a maioria dos recursos adicionais que ja vem pré-instaldo no netbeans, e particulamente, acho mais fácil instalar plugins para desktop nele do que no eclipse.

Fiz todo o meu tcc em Java Desktop, utilizando o Netbeans, é fácil e confortante, porém, muitos dos recursos que ele oferecem não são otimizados, por exemplo as DefaultTableModel, usei MUITOOOOOOOOOO isso até conhecer maneiras mais eficazes, (aprendi aqui no guj :P).

Mas aconselho que no inicio utilize o NetBeans, depois de algum tempo, muitas coisas você faz na mão mesmo :wink:

[quote=sergiotaborda][quote=Str.Up.Icio]percebi que aparentemente as principais ferramenta de desenvolvimento Java são o Netbeans e o Eclipse e visto que num primeiro momento o Netbeans
permite que você desenhe a GUI enquanto no Eclipse você precisa fazer ela manualmente (vida longa a gridbag layout :P) o que me deixou curioso:

O Programador Java profissional comum, que desenvolve aplicativos desktop, em uma empresa “normal” faz a interface do aplicativo como? usando um editor visual ou no braço? qual é a IDE mais comum?
pergunto pelo paremetro “médio”, ou seja a maioria das empresa, porque no delphi por exemplo existe a possibilidade de se gerar a interface programaticamente, mas muitos desenvolvedores acham que isso é Voodoo…
[/quote]

Eu trabalhei 4 anos com swing quando comecei com java e só depois migrei para web. Eu acho fazer swing na mão um suicidio. É preciso entender a diferença entre o swing e os componentes drag-drop da vida. O Swing é uma API de infraestrutura , ou seja, vc não deve usá-lo diretamente. Vc deve criar sua própria bibilioteca à volta dele. Fazendo isso, é muito mais simples criar na mão. Na época eu crie um modelo que a partir de um xml criava a aplicação (inspirado no thinlet e no jsf). No final a única coisa que precisava codificar era o controlador do formulário. Sim, tive que criar uma classe de From que não vem defaul no swing, mas que ajudou muito a organizar as coisas. Toda a mecanica de navegação, janelas modais, etc. estava embutida no framework. Construir alguns componente que são de use comum como datepicker e um painel especial que continha outros paineis, mas era possivel modificar o como os papeis eram mostrados e podia alternar entre tab, acordion, stack, etc… para forms usava o FormLayout do JGoodies que é infinitamente melhor que qualquer gridbag, alias eu nunca uso grid bag.

Antes de java eu mexia com VB 6 e anteriores. A coisa me incomodava era ter que alinhar todos os componentes , mesmo como os anchors, era muito chato. O layoutmanager do swing permite controlar o posicionamento em runtime e de forma simples. Os IDE mágicos criam código automático e para mim isso é mau porque ha controle e não ha como melhorar o código. Pior, não ha como rastrear os problemas. Com uma biblioteca é bem simples pq é estruturado.

Eu sinceramente acho que as pessoas em geral não tiveram o treinamento necessário ou usaram o tempo necessário o swing para o achar chato e criarem bibliotecas. O pessoal do Spring já pensou nisso. Em web, existe milhares de frameworks, porque exactamente milhares de pessoas usam todos os dias e acham usar servlet muito chato e ai inventam algum framework. Da mesma forma que ninguém é loco de usar sevlet puros, tb ninguem deveria usar swing puro.

Então, não é bem fazer no braço, é criar uma biblioteca que permita criar no braço simples e rápido. IDE só é boa para uma coisa : prototipagem. Mas uma folha de papel faz o mesmo efeito e é mais simples de usar.

[/quote]

É eu particulamente como você mencinou, não cheguei a usar tanto o swing, a ponto de cansar dele, só para projetos pequenos.
Também tem o OpenSwing, e muitos, muitos, muitossssssssssss.

Podia compartilhar sua biblioteca na comunidade hein :wink: ou não hahahahahaha!

mas se td mundo tem q fazer essa “sua própria lib”, pra assim, e somente assim, ser possível usar o swing, pq não ja vem com ele, ou, pq não usar uma q já existe?

Muito obrigado por todas as respostas , entendo a noção de gerar a UI com uma biblioteca feita especialmente para isso, gostaria de saber se essa é uma pratica comum, existem frameworks que facilitem isso , web ou desktop?

Mas e ele é usado profissionalmente?

Ai que tá, pela minha experiencia é extremamente simples e até preferivel usar html de uma maneira mais manual, porque em geral o HTML gerado pelo editor visual é irritantemente ruim (vide o html do WebForms do ASP.NET)eu não digo que é necessario codificar como um desenvolvedor de interfaces não , mas minha preferencia quando vou desenvolver para web é pela técnica que me permita um maior controle sobre como minha interface vai ficar (código de navegador incluso) … uma coisa que me irritava profundamente quando eu trabalhava com Delphi (fora o próprio delphi) , era o desdem pela interface que a maior parte dos programadores tem…

[quote=IgorDutra]
Podia compartilhar sua biblioteca na comunidade hein ou não hahahahahaha![/quote]

é mesmo!!

se é java e é desktop, é open.

[quote]
GilsonNunes
mas se td mundo tem q fazer essa “sua própria lib”, pra assim, e somente assim, ser possível usar o swing, pq não ja vem com ele, ou, pq não usar uma q já existe? [/quote]

Tudo pode ser usado profissionalmente, o que depende é a se ele atende a sua necessidade, para mim, tenho ainda muita dificuldade para desenvolver em desktop em java, web tenho um controle melhor, pois tenho amplo conhecimento de interface web.

Entenda bem, você não tem que fazer uma li própria para usar o swing, a vantagem é que tendo sua lib (framework), a produtividade aumenta. Assim como facilita muito o desenvolvimento, mas independente disso, você tem que conhecer o SWING de qualquer forma. Tenho um pensamento que pode atér ser idiota, mas antes de aprender qualquer framework, plugin ou algo do genero, preciso conhecer saber como se faz sem o framework, pois quando tiver um galho… a cagada estará feita :wink:

Trabalho com Delphi aqui e atualmente estou migrando para Java… O Netbeans foi a IDE mais pratica para nosso trabalho aqui, ele possui muitos recursos tanto para a criação de código como também o montador de interface gráfica. E tem suporte nativo a SVN.

Peguei aplicações Desktop para java e elas não fica atras do Delphi ou VB :3

[quote=kinrpg]Trabalho com Delphi aqui e atualmente estou migrando para Java… O Netbeans foi a IDE mais pratica para nosso trabalho aqui, ele possui muitos recursos tanto para a criação de código como também o montador de interface gráfica. E tem suporte nativo a SVN.

Peguei aplicações Desktop para java e elas não fica atras do Delphi ou VB :3[/quote]
Precisa estudar melhor o eclipse.
WindowBuilder gera as telas com código mais limpo, flexível e melhor que o Netbeans.
Além do que, Eclipse permite conexão tão boa ou superior ao SVN, CVS e Git quanto o Netbeans.

Faça um teste, compare o código gerado pelo NB e pelo WB do Eclipse e depois me diga se é ou não melhor.

Não é uma crítica ao NB, mas prefiro o eclipse.
A única coisa que ele ainda tem minha preferência é para programar em JME.

[quote=drsmachado]
Precisa estudar melhor o eclipse.
WindowBuilder gera as telas com código mais limpo, flexível e melhor que o Netbeans.
Além do que, Eclipse permite conexão tão boa ou superior ao SVN, CVS e Git quanto o Netbeans.

Faça um teste, compare o código gerado pelo NB e pelo WB do Eclipse e depois me diga se é ou não melhor.

Não é uma crítica ao NB, mas prefiro o eclipse.
A única coisa que ele ainda tem minha preferência é para programar em JME.[/quote]

Aí como é importante a opinião… eu mesmo não sabia destes detalhes… farei alguns teste aqui e pesquisarei mais sobre esses recursos, se bem que eu tenho feito o código a mão e mandado os componentes para dentro de um Scroll rs.

[quote=kinrpg][quote=drsmachado]
Precisa estudar melhor o eclipse.
WindowBuilder gera as telas com código mais limpo, flexível e melhor que o Netbeans.
Além do que, Eclipse permite conexão tão boa ou superior ao SVN, CVS e Git quanto o Netbeans.

Faça um teste, compare o código gerado pelo NB e pelo WB do Eclipse e depois me diga se é ou não melhor.

Não é uma crítica ao NB, mas prefiro o eclipse.
A única coisa que ele ainda tem minha preferência é para programar em JME.[/quote]

Aí como é importante a opinião… eu mesmo não sabia destes detalhes… farei alguns teste aqui e pesquisarei mais sobre esses recursos, se bem que eu tenho feito o código a mão e mandado os componentes para dentro de um Scroll rs.

[/quote]
O netbeans deixa o código “engessado”. Você consegue alterar poucas coisas. Ele seria algo indicado para iniciantes mesmo.
Já o WindowBuilder permite que você faça o que quiser com o código. Seria indicado para quem já possui uma certa experiência e sabe que nem tudo deve ser colocado no construtor ou num método chamado por ele.
Se você cria seus componentes como variáveis da classe, pode definir toda a configuração de cada um nos setters deles.

[quote=IgorDutra]
Podia compartilhar sua biblioteca na comunidade hein :wink: ou não hahahahahaha![/quote]

Não posso compartilhar aquele biblioteca porque é proprietária. Contudo o mesmo conceito de geração de UI baseado em arquivo está sendo contruido no MiddleHeaven e já tem alguns testes mostrando que funciona. Contudo ainda me falta muito trabalho para chegar nos componentes utilizáveis e chegar no nivel da biblioteca que refeir. No MiddleHeaven estrapolei o mecanismo para que seja possivel geram interfaces em qualquer tecnologia ui inclusive html e neste momento estou estudando a possibilidade de integrar o o ZK nesse mecanismo (porque ai os componentes já estão prontos)

mas se td mundo tem q fazer essa “sua própria lib”, pra assim, e somente assim, ser possível usar o swing, pq não ja vem com ele, ou, pq não usar uma q já existe?

[/quote]

Eu não disse que todo o mundo tem que fazer a sua lib. O que eu disse é que é preciso um lib. Vc pode usar uma que já existe.

Estratégicamente, do ponto de vista da gerencia do produto e diminuição do risco a lib é necessária. Agora, se vc usa uma de terceiros que vc se sente confortável e faz o que vc quer e é fléxivel, vc domina, então use essa. Eu perfiro fazer a minha, mas é um gosto pessoal. Eu já fiz isso várias vezes , sei como fazer, e acho mais viável assim, mas isto é eu.

Porque a lib não vem com o swing pergunta vc. Porque a sun sempre teve uma estratégia dirigida a prover API de infra-estrutura e não API de muito alto nível. É por isso que o EJB teve os problemas que teve e o JPA e o JSF são coisas recentes. Sun via o java como um lego onde as peças básicas vc obtém do fabricante, mas as construções são suas. Se as peças não fazem o que vc quer, vc cria uma que faça. Mas nem sempre isto é possivel. Algumas peças têm que ter suporte de “frábrica” para algumas funcionalidades ( por exemplo uma peça especial que dobre, ou uma que seja transparente). O AWT era esta peça fundamental. Mas se rapidamente se viu que não era muito multiplataforma, ou seja, era caro manter assim. O swing é lightwieght e é muito fácil criar seus proprios componentes e look and feel.

Aqui usamos WindowBuilder (para desktop).

O drsmachado já falou sobre ele… e realmente ele funciona muito bem. Usamos com SWT e uma das vantagens é ele ler os fontes gerados na unha e mostrar o layout e vice-versa.
Tudo fica muito organizado, e o projeto não depende dele, ele é uma ferramenta auxiliar apenas.
Só que tem telas que fazemos que são muito dinamicas e se renderizam dependendo da resulação da tela, ou seja, não tem como usar nenhum app visual para estas. Só fazendo na unha mesmo!

Para protótipo acho realmente muito bom usar este tipo de ferramenta!

Para WEB nunca encontrei nada que funcionasse legal!

[quote=jmmenezes]Aqui usamos WindowBuilder (para desktop).

O drsmachado já falou sobre ele… e realmente ele funciona muito bem. Usamos com SWT e uma das vantagens é ele ler os fontes gerados na unha e mostrar o layout e vice-versa.
Tudo fica muito organizado, e o projeto não depende dele, ele é uma ferramenta auxiliar apenas.
Só que tem telas que fazemos que são muito dinamicas e se renderizam dependendo da resulação da tela, ou seja, não tem como usar nenhum app visual para estas. Só fazendo na unha mesmo!

Para protótipo acho realmente muito bom usar este tipo de ferramenta!

Para WEB nunca encontrei nada que funcionasse legal![/quote]
Para a web, ainda sou mais na unha mesmo.
Talvez por odiar css e design…rs.
E essa parte de telas renderizadas dinamicamente, é bem complicada.

Oi,

Tudo na mão. Sem visual. Criando classes que estendem a outras, criando a minha própria lib.

Tchauzin!

[quote=drsmachado][quote=jmmenezes]Aqui usamos WindowBuilder (para desktop).

O drsmachado já falou sobre ele… e realmente ele funciona muito bem. Usamos com SWT e uma das vantagens é ele ler os fontes gerados na unha e mostrar o layout e vice-versa.
Tudo fica muito organizado, e o projeto não depende dele, ele é uma ferramenta auxiliar apenas.
Só que tem telas que fazemos que são muito dinamicas e se renderizam dependendo da resulação da tela, ou seja, não tem como usar nenhum app visual para estas. Só fazendo na unha mesmo!

Para protótipo acho realmente muito bom usar este tipo de ferramenta!

Para WEB nunca encontrei nada que funcionasse legal![/quote]
Para a web, ainda sou mais na unha mesmo.
Talvez por odiar css e design…rs.
E essa parte de telas renderizadas dinamicamente, é bem complicada.[/quote]

É sim… mas o detalhe que fazemos SashForm e o usuário tem liberdade de modificar o tamanho de diversos elementos livremente (isso em um app desktop)… Como acontece com frame redimensionável em web… Entretanto não há table dinâmica no desktop igual na web e neste caso precisamos posicionar os componentes dinamicamente, calculando as coordenadas a partir do tamanho da tela e do form!

Claro que criamos classes próprias para isso para não reimplementar diversas vezes… mas que no começo deu um trabalhinho deu!!! Mas o resultado final valeu a pena!