Pergunta que eu deveria ter feito desde o começo

20 respostas
O

Desde quando eu entrei na faculdade que eu me interesso por programação. Sempre mexi com linguagens procedurais (particularmente, C e FORTRAN), mas depois que eu fiz uma disciplina de Engenharia de Software, comecei a explorar linguagens orientadas a objetos. Pincelei alguma coisa em C++, mas achava os códigos meio “duros de ler”.

Aí, por influência de um colega meu que foi estudar na França, comecei a me interessar por Java. Mas, por onde quer que eu veja, só encontro gente utilizando Java para aplicações para Web.

Aí vem a pergunta:

“Eu não tenho o menor interesse em desenvolver aplicações para Web. Mesmo assim, eu posso ser feliz com Java?”

PS: Antes que alguém pergunte, eu não curso Ciências da Computação. Curso Física e a maioria dos programas que eu escrevo são de cunho matemático/científico.

20 Respostas

S

Simmmmmmmmmmmm :smilecolros:

“Use Java e seja Feliz” é um lema válido também fora do ambiente Web. :mrgreen:

P

Oi,

As pessoas programamt anto em Java para a Web porque hoje em dia é muito mais fácil, rápido e barato você ter uma aplicação corporativa em ambiente deste tipo.

Java é uma linguagem de programação de uso geral, e possui APIs para quase qualquer coisa. Não sou conhecedor das aplicações científicas com a tecnologia, mas já li algo sobre biotecnologia e Java [aqui: http://www.onjava.com/pub/a/onjava/2004/03/10/bioinf.html ], além de ter colhido alguns links interessantes:

http://www.npac.syr.edu/projects/javaforcse/
http://www.chimie.fundp.ac.be/javas/j_sci.html

Além de muitos outros facilmente encotnráveis no Google.

Bom, você vai poder contar com uma linguagem rica em recursos, realmente orientada a objetos e com uma comundiade enorme.

[]s

G

É verdade o que falam de que C++ é mais rápido que Java? … ainda mais falando de aplicações de cunho matemático.

Eu acho que uma das vantagens que você pode ter ocm Java ainda é a portabilidade, e, sem muito mais a aprender, pode começar a desenvolver para PDAs e celulares.

Gostei do tópico. Vamos ver o que a galera mais experiente diz.

P

Oi, Grego,

Java roda no topo de uma máquina virtual [JVM] que estáno topo de outra máquina virtual [Sistema Operacional]. C/C++ e demais linguagens compiladas rodam no topo de uma Máquina Virtual, apenas.

Java é “compilada” em instruções chamadas bytecodes que são interpretadas pela JVM e passadas para o processador. Lingauges “normais” são compiladas diretamente para o processador entender.

Apesar da diferença de desempenho não ser significativa na maioria dos casos, ela existe e semrpe vai existir. Cabe ao projetista pesar o que vale mais num caso específico e escolher a melhor linguagem para este caso, seja Java, C/C++, PERL, Lua ou qualquer outra cosia.

[]s

L

Eu por exemplo usei Java para desenvolver um software de interfaceamento laboratorial, que: lê os dados provenientes de uma porta serial do equipamento de análises, processa as informações e grava no banco de dados do sistema do hospital.
O Software não possui interface gráfica ou mesmo texto, mas faz um baita trabalhão “por baixo”.

B

Caso você esteja falando sobre desenvolvimento de aplicações científicas em java, dê uma olhada nesse artigo bem interessante:

http://www.developer.com/tech/article.php/631151

Ele discute coisas como a necessidade de orientação a objetos nesse ramo da programação e as vantagens e desvantagens da linguagem para desenvolvimento científico.

K

[b]Heeeeeeeeeeeeeeuuuuuuuuuuuuurrrrrrrreeeeeccccccaaaa!
Heureca!!!

Também faço fisica, mais precisamente mestrado.
Se você ja ouviu falar no Maple (www.maplesoft.com) é um dos melhores software cientificos do mercado e boa parte dele é escrito em java.
Quanto ao fato de desenvolvimento web não tem problema aprender um pouco, pois tenho boas experiencias no uso de imagem facilitando a construção de graficos, com a vantegem de ser acessado em qualquer lugar.[/b]

J

Pois é rapaz… eu postei uma mensagem aqui ja tem um tempinho exatamente sobre isso, pode ser interessante pra vc…

http://www.guj.com.br/forum/viewtopic.php?t=8470&highlight=

B

Esse é mesmo um link sempre bom ter à mão.
Java não é lento para matemática, apesar de todo o “overhead”.

P

Essa biblioteca parece muito itneressante para calculo numerico, e deve ser legal para voce ver como o pessoal esta mexendo com java

http://www.mi.uib.no/~bjornoh/jmp/

T

PeloamordeDeus! :slight_smile:

Eu nunca usei Java para web, apesar de achar muito bom o seu uso (eu prefiro o PHP por ser mais leve - joguem os tomates depois em outra discussão), e uso Java para fazer apps Swing e em “modo texto” tanto para a parte “client” como para a parte “server” da coisa (não, ainda não tem J2EE rodando), e roda muito rápido (disse roda, não carrega ;-)) e temos exemplos de PII utilizando o programa (isso se não aposentaram os bichinhos ainda, mas que rodavam, rodavam!).

As vezes as pessoas abstraem sempre alguns conceitos do Java: ou acham que é só JSP, ou acham que é só applets, ou acham que é só J2EE e acabam esquecendo de ótimas (não estou referenciando as minhas não nesse ótimo, apesar que as acho bem projetadas ehehe estou falando de mais um monte de apps que tem por aí) apps que tem por aí.

Java antes de tudo é uma linguagem de programação que te deixa fazer uma aplicação sem precisar de um framework. Algumas pessoas aprendem o caminho inverso, aprendem toda a parte do framework e esquecem o resto (apps,applets,jsp) e ficam por isso mesmo. Aí vem aquele papo “Java é pesado para rodar blá blá blá”, lógico, levando em conta toda a estrutura de um framework, que possa vir a ser necessário (tem uns loco que fazem J2EE até pra programa de padaria, quando o que o seu Joaquim precisava era só uma appzinha de controle de caixa).

Eu acredito que mais do que defensores da linguagem, temos que ser orientadores em tudo que a linguagem tiver para oferecer, e implementar de acordo com cada tipo de problema. A troca da implementação da solução adequada para a resolução de um problema pode levar a opiniões erroneas sobre a linguagem e as tecnologias utilizadas, e acaba queimando o filme.
E cria um vício tosco sobre nós que sempre queremos complicar certos tipos de problemas. Não vejo problema algum em uma boa análise, mas o que acontece hoje em dia é que muita gente faz muita análise e não põe a mão na massa. Ou tentam montar um esquema bem definido e totalmente baseado em “design patterns” (hoje em dia é bonito falar isso, vejam bem, eu acho os patterns ótimos, mas está ficando muito “hype” e sem conteúdo) mesmo para aplicaçõeszinhas minúsculas.

Vejam alguns conselhos desse cara, em relação à isso:
http://www.infoworld.com/article/03/03/05/HNmanyspecs_1.html

Don Box, arquiteto do .NET da m$ (!!!) diz:
“Read fewer specifications, write more applications, write less code by using tools that generate code automatically, and remember that humans matter, so if you must write a specification, make it legible.”

Muita gente esquece isso hoje em dia, e acabam como ótimos projetistas mas péssimos programadores (sem críticas ofensivas-mas se você não “põe a mão na massa” e não faz a coisa andar, meu amigo, você não sabe o que está perdendo).

Mas é isso. Volto no ponto que devemos divulgar Java em todo o seu escopo, por que tem muita coisa boa que pode mudar muito a opinião dos “detratores” da linguagem hoje em dia. Se relegarmos o Java à apenas uma das tecnlogias embutidas que podem não ser a solução ideal para um certo tipo de problema, ainda vamos continuar a escutar “Java é uma @#$@#” dos menos informados. E eles não tem culpa, afinal, a gente que sabe que tem que ensinar.

Abraços.

_

Gostei do tópico.

Mas apesar de concordar com a sua analise TaQ, essa frasesinha me deixou doído:
“Read fewer specifications, write more applications, write less code by using tools that generate code automatically, and remember that humans matter, so if you must write a specification, make it legible.”
É sempre necessário escrever uma especificação … e 'ferramentas que geram código automaticamente … isso sim é o dolorido. Credo … nem o dreamweaver faz html do jeito que eu gosto. Imaginem um programa que tenta escrever Java pra mim :smiley:

T

“LIPE”:

É sempre necessário escrever uma especificação … e 'ferramentas que geram código automaticamente … isso sim é o dolorido. Credo … nem o dreamweaver faz html do jeito que eu gosto. Imaginem um programa que tenta escrever Java pra mim :D

Eu concordo plenamente com a especificações, mas acho que o que o autor do artigo quis dizer e eu comentei um pouco aí em cima é que muita gente hoje em dia quer ler/escrever/discutir sobre especificações, e acaba mais virando teoria do que prática. Acho que ele se ressentiu que o pessoal mais fala e divaga sobre o SOAP do que efetivamente o usa de uma maneira mais digamos, “agressiva”. :slight_smile:
Agora, quanto a ferramentas que escrevem o código, vejam bem, sou meio retardado e não uso IDE, mas não sou contra quem usa não, de maneira alguma. Cada um sabe o que é melhor para cada uso e situação.
Mas algumas vezes mesmo uma simples IDE abstrai conceitos da linguagem importantes que podem ser muito úteis no aprendizado da mesma. Vamos dar um exemplo: nos primórdios do Java havia a Visual Café, da Symantec. Não era exatamente uma maravilha mas era uma das poucas da época, e cheguei a usar ela um pouco para dar uma “ajeitada” nas telas enquanto pegava o lance (na época, novo) do Swing. A Visual Café gerava o código dos eventos automaticamente, então se você colocava um botão lá ela adicionava um ActionListener automático (que não era removido quando você retirava o botão em grande parte das vezes, argh, ponto a menos pra IDE), então, não se precisava preocupar com isso. Mas acontece que aí tem dois perfis de usuários de IDE: os que vão abrir o código e ver o que estava acontecendo lá dentro (eu abri e jurei pra mim nunca mais usar uma IDE ehehe) e os que relegam o que está acontecendo, juntamente com todos os conceitos lá apresentados. Então, se você falar de um ActionListener pra um tipo de usuário desses, ele não vai saber direito o que mesmo usando o dito direto e reto. Acho que foi nesse ponto que o autor procurou chegar (minha interpretação). O duro que tem coisa pior, tem coisa que gera todo o código pra você. Aí já é outra história (daquelas de terror, medonhas, que você acorda de noite gritando) … :wink:

L

Olá

Entendo Java para web como sistema Java interligado por protocolo web e não apenas Java acessado por página html. Explicado isto, deixem-me dar meu pitaco.

TaQ, brilhante resposta mesmo que uma coisinha ou outra se possa debater mais tarde!

Nabla, para ver Java rodando somente no desktop experimente aplicações como DBVisualizer ou OpenOffice. Na verdade hoje em dia estas aplicações são muito limitadas porque este modelo isolado está obsoleto. O normal é pensar em aplicações com muitas camadas espalhadas por locais distantes interligados por http (chamado por alguns de protocolo web).

Quem se habilitaria hoje a fazer um sistema frente de loja que funcionasse somente em um único estabelecimento? Provavelmente um sistema deste precisa interligar várias filiais e ainda disponibilizar relatórios gerenciais para os diretores onde quer que eles estejam. A interligação certamente será feita sobre http. Perceba que isto não tem nada a ver com o fato da aplicação usar html, JSP, swing, swt ou thinlet na camada de apresentação.

Um exemplo fácil de ser visto está em qualquer agência dos Correios. Trata-se do Banco Postal em que cada transação viaja milhares de Km entre o cliente onde quer que esteja, Brasília e SP de forma transparente para o usuário. Neste caso a camada de apresentação é swing.

No caso de aplicações científicas seria útil compartilhar dados e resultados entre profissionais remotamente localizados. Hoje é comum trabalhos gráficos serem compartilhados entre criadores e laboratórios. Seria fácil citar muitos outros exemplos. O bom do Java é que ele é perfeitamente adequado para os dias de hoje em que precisamos interligar tudo de modo seguro e consistente. Java faz tudo isto e ainda com mais facilidade do que outros ambientes de programação.

[]s
Luca

T

Obrigado! E vamos lá, debates saudáveis são bons para todo mundo. :slight_smile:

O

Oi gente!

Primeiramente, muito obrigado pelas respostas (eu não pude acessar a Internet durante a semana santa e só estou tendo a oportunidade de ver a repercussão do tópico agora).

Em segundo lugar, acho que acabei passando uma idéia incompleta. Apesar de eu mencionar as aplicações científicas dos programas que eu já escrevi, não pretendo ficar preso a elas e não é apenas a elas que eu estou me referindo (sobretudo agora que eu estou descobrindo a Java). Só não pretendo desenvolver aplicações Web (pois essa não é minha necessidade no momento).

Por exemplo, eu já ouvi falar bem da utilização da Java para desenvolver jogos.

C

Sei la… usar Java pra desenvolver jogos (tirando J2ME e applets, que ja nem existem mais, gracas a deus), a coisa toda parece sexo na adolescencia pra mim…

  • Tah na cabeca de todo mundo o tempo todo
  • Todo mundo fala disso o tempo todo
  • Todo mundo pensa que todo mundo tah fazendo
  • Quase ninguem esta mesmo fazendo
  • Os poucos que fazem estao:
    • fazendo errado
    • certos de que vai ser melhor da proxima
    • esquecendo de praticar de forma segura

:smiley:

T

No caso de jogos eu nem falo nada por que se não jogo faz muito tempo, desenvolver então … sem chance. :slight_smile:

O

“JBoy__”:
Pois é rapaz… eu postei uma mensagem aqui ja tem um tempinho exatamente sobre isso, pode ser interessante pra vc…

http://www.guj.com.br/forum/viewtopic.php?t=8470&highlight=


Eu já havia lido o seu post. Tirando a parte de cálculos trigonométricos, Java tá pau a pau com VC++, segundo o benchmark… Muito interessante…

Quando eu fiz Cálculo Numérico, meu professor indicou, certa vez, este link para servir de inspiração para o EP (exercício-programa) que tínhamos de entregar (que era sobre o assunto):

http://cauchy.math.colostate.edu/Applets

D

Quando comecei a estudar Java, a 1.a coisa que fiz foi implementar algoritmos numéricos em Java. Posso dizer por cima, que não senti muita diferença entre as versões em C++.

Além disso, escrever um código para interface gráfica utilizando Swing é bem mais fácil do que MFC ou APIs e bem menos nebuloso (no sentido de que o programador não faz nada) do que VB.

As APIs Java para rede são bem mais fáceis de utilizar do que as APIs para Windows. Você tem suporte a threads diretamente na linguagem.
Maior segurança e clareza (leia-se, ponteiros, garbage collector). Outro exemplo é o n.o de APIs que o Java proporciona. E eu gosto muito mais das bibliotecas Java para algoritmos e estrutura de dados.

Ler uma imagem em Java é relativamente simples comparado ao C.

E além disso, vc pode programar para WEB. JDBC, APIs para audio,
video, TV Digital, XML, etc.

Talvez, a JVM precise evoluir mais e ficar mais rápida, mas como linguagem, Java é perfeita.

Daniel

Criado 7 de abril de 2004
Ultima resposta 13 de abr. de 2004
Respostas 20
Participantes 15