Seguinte, eu procurei no fórum a respeito de Java vs C++, mas não me convenceu então vou fazer a pergunta mais diretamente:
Qual das duas linguagens é melhor para se fazer softwares bons? Java ou C++?
Quero pensar que seja Java, mas eu não sei nenhum software famoso que foi feito nele, e em C++ tem o Photoshop, Illustrator, Firefox, e até a Mac OS x. Mesmo com evidências fortes a favor do C++ ainda tenho dúvidas.
Bem, cada linguagem tem uma abordagem mais apropriada a cada tipo de sistema. Por exemplo, se você tiver que fazer um sistema Web no padrão MVC, não acha que utilizar JSP, Servlet ou JSF é muito mais apropriado do que tentar fazer em C++?
E da mesma forma existem situações onde é mais apropriado fazer um sistema em C++. Tudo depende da situação.
Andei procurando na Net sobre interfaces gráficas de C++, e achei um tal de QT que parece que é para todas as pataformas, mas a coisa é muito complicada. Pra instala o Qt SDK, iria demorar mais de 3h, não sei porque. Baixei a IDE Qt Creator, tentei seguir um tutorial mas dava só erro, que deve ser por não ter o SDK.
Essas dificuldades e complicações que me tiram o ânimo e me fazem desejar ser o Java hoje em dia melhor que o C++ pra softwares desktop, só que como eu já disse, não conheço. Só o Netbeans, Eclipse que segundo o dream foram feitos em Java :p.
C/C++ é a lingugem mais usada para aplicativos desktop porque tem uma quantidade enorme de bibliotecas para isso. Tem o Qt, GTK, win32api e todos os .dll’s ( ou .so’s ) do sistema operacional.
O java é mais focado no J2EE e J2ME mesmo…
Mas é necessário bastante experiência para escrever uma app c++, a simples falta de um include gard onde precisa não deixa nada compilar.
Mas para fugir de toda essa complexidade do C++, eu aconselho Python para apps desktop, muito mais simples!
Agradeço! Vou estudar um pouco de Python, perguntar pro professores meus pra saber o que eles acham e se recomendam hoje em dia.
De repente é legal, nunca vi nada sobre essa linguagem.
Depende do tipo de aplicação. Eu particularmente não gosto de usar Java em desktop, prefiro e trabalho com C (e raramente com C++). Para trabalhar com gráficos, sem dúvida alguma, Java é muito mais amigável e fácil. Mas também há o C++ Builder, Qt Creator e etc, para quem não quer ter muito trabalho. Para trabalhar com recursos diretos do sistema operacional, esqueça do Java, você terá que pedir ajuda à uma outra linguagem, como C ou C++, por exemplo. Como eu havia dito, depende muito do tipo de aplicação. Para aplicações rápidas e que usam banco de dados, por exemplo, não uso nem Java, nem C e nem C++, uso Delphi.
Você teria algo para colocar nesses 3 pontinhos, ou lista termina só com um software popular e 2 para desenvolvedores java?
As vantagens do C++ para desktop estão no seguinte:
Não exige instalação de nenhuma virtual machine. Portanto, também não corre-se o risco de uma desinstalação prejudicar seu sistema;
Integra-se muito bem ao sistema operacional, e permite usar recursos avançados desse sistema;
É portável num número muitíssimo maior de plataformas, desde que se programe bem.
Pode ser usado para o desenvolvimento de sistemas de tempo real, e tem melhor performance em aplicações que demandam muito processamento (CPU-Bound);
As desvantagens:
Não é uma linguagem gerenciada. O programador deve saber alocar e desalocar memória corretamente. E isso pode gerar bugs dificílimos de corrigir;
Exige profissionais mais caros e escassos no mercado;
Pode ser difícil de otimizar, pois as IDEs não são tão boas e não há bons profilers.
É dificil configurar o ambiente de desenvolvimento;
Agora, o que seria uma “bom software” para você? Se for o software que roda no servidor, não vejo porque usar o C++ no lugar do Java. Mesmo em aplicações desktop empresariais, eu pensaria 3 ou 4 vezes antes de trocar o Java ou o C# pelo C++. Até por que, a desvantagem número #1 não é pequena. É muito mais complexo lidar com uma linguagem não gerenciada.
Hoje, eu só usaria C++ em sistemas de tempo real e softwares de prateleira.
Você teria algo para colocar nesses 3 pontinhos, ou lista termina só com um software popular e 2 para desenvolvedores java?[/quote]
ehehehehehehe, bem eu aposto que tem (de mente vêm alguns emuladores, muitos softwarea open-souce MUITOS mesmo !) mas enfim citei os trẽs pra mostrar que tem sim e dentro da nossa vida!
Pois é, só se esforçando um bocado pra lembrar, e sempre para um público restrito. Daria para citar o Star Office?
O Java praticamente não existe no mercado de softwares de prateleira.
Já em C++, dá para citar o próprio Windows, Photoshop, Gimp, Visual Studio, todos os jogos, Corel, Blender, Office, Firefox, IE, Notepad, e praticamente tudo que está na lista “programas” do menu iniciar da maioria das pessoas.
Bom dia a todos, estava passando e resolvi dar minha contribuição na thread…
Eu entendo que existem 2 erros escondidos sobre o assunto:
O que define a utilização de uma tecnologia são os requisitos (funcionais e não-funcionais) de uma solução.
Vamos entender na pratica: Qual é o melhor carro? peugeot 408 ou uma saveiro? É claro que qualquer pessoal sem pensar ira dizer "o peugeot é o carro" !! kkkk
Mas se eu falar para vc assim…
*)Qual é o melhor carro para levar uma geladeira Brastemp a 100 Km daqui? -> SAVEIRO pq existe o espaço na carroceria. Veja que o peugeot aqui não é indicado pq aonde vc colocar a geladeira dentro do carro?
*)Qual é o melhor carro para se passear com a família de 5 pessoas? -> Peugeot pq cabem todos la dentro, super confortável, ar condicionando etc. Já na saveiron não da pq tem apenas 2 bancos na frente.
Por isso, em minha opinião, não faz sentido nenhum perguntar qual seria a tecnologia ideal para ser usado entre Java, C, Net, "Whatever" sem requisitos da solução a ser desenvolvido. Existem grandes, maravilhosos e lindos sistemas feitos em praticamente varias tecnologias.
Não existe equivalência entre Java e C!
Java é plataforma para soluções de alto nível possuindo um grande e complexo ecossistema de tecnologias, componentes e frameworks baseados em especificações e/ou proprietários portáveis, multiplataforma e independente de fornecedores que podem ser utilizadas com inúmeras e diferentes linguagens de programações - OOP, AOP e funcional.
Ja o C é apenas uma linguagem de programação de médio nível multiparadigma (de alto nível + vários recursos de baixo nível) que contem algumas API isoladas para fazer diversas tarefas.
Alias, vale lembrar que não existe nenhuma outra plataforma no mercado com as mesmas características para ser comparado com o Java. O que pode ser feito é pegar determinados produtos e comparar com os concorrentes existentes dentro do ecossistema Java. Por exemplo:
*)Preciso fazer uma aplicação desktop client/server. Qual seria melhor usar:
Em Java teríamos as seguintes opções:
Visual=Swing, AWT, SWT.
Comunicação com SGDB=JDBC e JPA,
RAD=Eclipse VEP, NetBeans Matisse ou OpenSwing.
Distribuição=Java Web Start.
Pontos positivos são A, B, D, E etc.
Pontos negativos são X, Y , X etc…
Em Delphi teríamos as seguintes opções:
Visual=VCL, visual.NET
Comunicação com SGDB=DataSet
RAD=Borland Delphi.
Distribuição=não tem…
Pontos positivos são A, B, D, E etc…
Pontos negativos são X, Y , X etc…
Com base nisso, o responsável pelo projeto deve tomar a decisão e assim gerenciar os pontos negativos.
Vale lembrar que não existe solução melhor ou pior…sempre haverá pontos negativos a serem eternamente trabalhados.
Já trabalhei muito com C++ e posso te dizer que é uma ótima linguagem, mas hoje em dia Java fornece diversos frameworks onde vc pode facilitar o seu desenvolvimento praticando as boas práticas de desenvolvimento de software. Mas caso decida utilizar C++ tome muito cuidado com o gerenciamento de mémoria lembrando que você realizara o papel do garbageCollector.
O C não é multi-paradigma. Ele implementa apenas o paradigma estruturado.
Quem é multiparadigma é o C++. Cuidado, pois são linguagens completamente diferentes.
E “algumas” APIs isoladas é uma simplificação grosseira, pois são milhares de APIs.
Eu considerei C e C++ como se a mesma, evoluida kkk…
O C não é multi-paradigma. Ele implementa apenas o paradigma estruturado.
Quem é multiparadigma é o C++. Cuidado, pois são linguagens completamente diferentes.
E “algumas” APIs isoladas é uma simplificação grosseira, pois são milhares de APIs.
[quote]A tecnologia Java esta presente em mais de 4,5 bilhões de dispositivos e é utilizada em todos os principais segmentos da indústria, estando presente em uma ampla gama de dispositivos, computadores e redes. Sua versatilidade, eficiência, portabilidade de plataforma e segurança fazem dela a tecnologia ideal para soluções corporativas integradas online. A tecnologia Java está em todo lugar! Ela pode ser encontrada em laptops, datacenters, consoles de jogo, supercomputadores científicos, telefones celulares, smartphones, tablets, cartões inteligentes e até na Internet. Os últimos números publicados no www.java.com são:
Mais de 800 milhões de PCs
2,1 bilhões de telefones celulares e outros dispositivos portáteis
3,5 bilhões de cartões inteligentes
Além de set-top boxes, impressoras, webcams, jogos, sistemas de navegação para automóveis, terminais lotéricos, dispositivos médicos, guichês de pagamento de estacionamento etc.
[/quote]
A resposta é “Sim” ou vc acha q esse povo todo ai esta brincando de programar? kkk
Qualquer duvida estou a disposição - http://fernandofranzini.wordpress.com/for-j/
Bom final de semana querido
Aplicativos muito integrados ao SO (tais como defrag, ou aplicativos que usem recursos específicos como o Active Directory, DirectX, etc).
Aplicativos de tempo real onde o intervalo de tolerância seja menor que o tempo de execução do garbage collector.
Em java não puro (com JNI), vc consegue programar qualquer coisa. Entretanto, vc terá que recorrer ao C ou ao C++ e provavelmente esse código não será multiplataforma (a menos que vc mesmo compile as libs nativas para várias plataformas). Pode ser vantajoso caso você tenha uma parte nativa pequena, e queira acessar o resto do que a plataforma java oferece.
Por sorte, já existem muitas APIs que fazem isso por você. Por exemplo, para acessar a OpenGL, existe a LWJGL e a JOGL, com esse trabalho já feito.
Aplicativos muito integrados ao SO (tais como defrag, ou aplicativos que usem recursos específicos como o Active Directory, DirectX, etc).
Aplicativos de tempo real onde o intervalo de tolerância seja menor que o tempo de execução do garbage collector.
Em java não puro (com JNI), vc consegue programar qualquer coisa. Entretanto, vc terá que recorrer ao C ou ao C++ e provavelmente esse código não será multiplataforma (a menos que vc mesmo compile as libs nativas para várias plataformas). Pode ser vantajoso caso você tenha uma parte nativa pequena, e queira acessar o resto do que a plataforma java oferece.
Por sorte, já existem muitas APIs que fazem isso por você. Por exemplo, para acessar a OpenGL, existe a LWJGL e a JOGL, com esse trabalho já feito.[/quote]
Agradeço as dicas de vc e de todos, então parece que vou me puxar em Java. Logo no curso nós vamos ter uma segunda parte de Java, ai de repente eu me empolge mais.
Pessoal estou ressuscitando esse tópico pra fazer uma pergunta básica que eu ainda estou em dúvida.
Eu estou querendo desenvolver um software que organize um campeonato de xadrez, algumas das funcionalidades que ele vai ter são:
Emparceirar os jogadores (possuo uma fórmula para isso);
Calcular a pontuação dos jogadores;
Cadastrar jogadores;
Gerar relatórios em excel;
Gerar arquivo html para fazer a promoção do evento;
entre outras funcionalidades básicas.
Eu já tenho um nível básico na linguagem Java, porém como comentaram nesse tópico mesmo, o java é pouco usado no mercado de desktop. Eu pensei em usar C++, mas ainda eu não estudei C++, eu até baixei o QTCreator e o X-Code para Mac OSX, porém ainda não estudei nada dessa linguagem.
Obs: Eu pretendo comercializar esse sistema futuramente.
Com base nessas informações qual linguagem vocês me recomendam? Java ou C++?