Por que java nao recebe heranças multiplas?

Por que java não tem herança multipla como c++, qual a vantagem de nao te-las?
Gostaria de saber se o fato de java nao ter ponteiros torna-o mais eficiente ou não…???
utilizo o Jbuilder, gostaria de saber se ele é muito utilizado no mercado… :?:

Java nao tem heranca multipla pq nao eh necessario em 99,9999999% dos casos. Mesmo motivo pra nao ter sobrecarga de operadores. E Java tem ponteiros, sim senhor. Qualquer referencia a um objeto eh um ponteiro :wink:

Ah, e JBuilder: BLEAH. :mrgreen:

Olá

Por partes vou responder sem entrar em detalhes:

  1. Herança múltipla.
    Se o Java tivesse tudo que o C++ tem qual seria a vantagem de fazer um linguagem nova? Acredito que você deve conhecer muito bem C++ para sentir falta de herança múltipla no Java. Sei que muita gente vai mostrar exemplos teóricos onde herança múltipla é muito útil.
    No meu caso posso garantir que desde que comecei a usar Java por volta de 1997 não me lembro de ter sentido falta de herança múltipla. Sempre me safei só com Interfaces. E mesmo com C++ não usava muito OO como muitos programadores C++ também não usam. Naquela época só usei herança múltipla nos exemplos do livro do Bjarne Stroustrup.

  2. Ponteiros
    De novo, se o Java tivesse tudo que o C++ tem qual seria a vantagem de fazer um linguagem nova? Pois é, uma das grandes vantagens do Java é não ter ponteiros. Ponteiros acessam diretamente a memória e seu uso, entre outros inconvenientes, ferraria por completo o garbage colector. Java não tem ponteiros por decisão acertada do seu criador que inventou em 1995 o conceito de bytecodes executados em máquina virtual e que agora há pouco tempo a Microsoft mais ou menos adotou a mesma solução

  3. JBuilder
    Ótima ferramenta paga. Dentre as ferramentas pagas ainda é das melhores.

[]s
Luca

Olá

Só para provocar o CV…

E como se faz ponteiro de ponteiro em Java que é uma das coisas mais comuns em C?

E que tipo de ponteiro seria este de Java se não posso fazer aritmética de ponteiros?

CV, Java pode usar ponteiros internamente mas não me permite usa-los. Então Java não tem ponteiros.

[]s
Luca

Hmm, de fato, falei besteira. :wink:

Olá

Pô, CV. Sacanagem, você não pode se dar por vencido assim tão rapidamente. Pensei que fosse ficar polemizando aqui pelo menos mais uma meia dúzia de posts. Estou quase trocando de argumentos só pelo prazer de debater com gente inteligente. Bem, xapralá. Fica proutra noite.

[]s
Luca

Q isso Luca?Vc com um espírito ironlynxeriano?(huhauhauha :lol: )
Eu tinha feito um tut de passagem de parâmetros para o fórum…mas parece q o Daniel ficou meio doido com a minha formatação e ficou f… de editá-lo…
Para distinguir a passagem de Java para a de ponteiros propriamente dita de C eu chamo de “passagem por referência a objeto”… mas isso dah muuuita discussão!

Olá

Já que estou com espírito polemizante então lá vai: Iron, cuidado para não criar novos meios de falar coisas antigas. Ao explicar uma coisa destas se deve ter sempre em mente as seguintes verdades:[list]Os métodos podem usar tipos primitivos e/ou referências a objetos como argumentos.
Os argumentos são sempre cópias de variáveis primitivas ou de referências a objetos.
Cópias de referências apontam para o mesmo objeto.[/list][]s
Luca

[quote]Os métodos podem usar tipos primitivos e/ou referências a objetos como argumentos.
Os argumentos são sempre cópias de variáveis primitivas ou de referências a objetos.
Cópias de referências apontam para o mesmo objeto[/quote]
Copias de referências apontam para o mesmo objeto desde q elas sejam referências do mesmo objeto(Isso eh óbvio,mas quem tah de fora pode flutuar…)
Usei esse aqui no meu tutorial como referência principal(alem da JLS) Luca:
http://www.yoda.arachsys.com/java/passing.html

A herança multipla possui o problema de conflito de nomes. Imagine se você criar uma classe chamada Humano que tenha um atributo nome, e uma Classe Robô que também tenha o atributo nome. Ao criar uma classe Andróide que herde de Humano e de Robô você vai ter problemas sérios, geralmente caros de resolver. Herança Múltipla é uma das facilidades-que-geralmente-não-facilitam-nada que criamos.

19.31% de 378 votos de uma enquete realizada do Portal Java responderam que usam JBuilder. Ou seja, é bem usado. Numa empresa que trabalha com Delphi, passar a trabalhar com JBuilder pode diminuir custos de treinamento. JBuilder é uma ferramenta boa. Porém muitas pessoas (inclusive eu) consideram outras ferramentas melhores. Ex: Eclipse, NetBeans, WebSphere, JDeveloper, JCreator, Forte, Visual Age, etc. Isso é bem polêmico. Faça uma pesquisa no fórum e decida qual IDE usar.

Sem tirar os méritos de James Gosling e sua equipe, mas em uma palestra sobre .NET, um funcionário da Microsoft afirmou que o conceito de máquina virtual já existe desde 1960. Isso não é verdade?

Eí, que brincadeira é essa? Eu escrevi Microsoft sem $! :smiley:

Olá

1960? Deslavada mentira.

Na era dos mainframes a IBM criou o conceito de virtual machines começou ainda no /370. Era uma coisa completamente diferente. O que ocorria era o seguinte: o mainframe mapeava para nós usuários um pedaço do computador que para nós seria o nosso computador. Lá a gente rodava tudo. Quem já usou mainframes IB deve lembrar dos VMs.

O conceito usado pelo Java está mais ligado aos conceitos das linguagens interpretadas existentes desde o final da década de 60 (basic foi o primeiro interpretador que usei em 1971). Mas bytecodes rodando em VMs são diferentes das linguagens interpretadas.

O conceito adotado pelo Java na verdade já existia somente como conceito muito antes do Java (mas não em 1960). O Bill Joy teve esta idéia e chegou a escrever um artigo teórico sobre isto. A aplicação prática veio mesmo no Java. Ver mais em: The History of Virtual Machines

No prefácio da The JavaTM Virtual Machine Specification está escrito:[list]The virtual machine that evolved into the Java virtual machine was originally designed by James Gosling in 1992 to support the Oak programming language.[/list]

[]s
Luca

Ponteiros para mim é como funciona no c++, onde posso realizar varios tipos de calculos utilizandoi-os. Ate agora nao senti falta, e como disse nao gosto de vicios de outras linguagens.Minha natureza, nunca foi de programador, agora e que estou dando enfase neste segmento, entao me perdoe se eu falei qualquer bobagem…mas que java nao tem ponteiros nao tem… :lol: :lol: :lol: :lol: :lol: :lol:

ABRACAO PRARA TODOS…

Botando um pouco mais de lenha na fogueira sobre a origem de Maquinas Virtuais, quero citar primeiramente a Maquina Lisp, criada no inicio da decada de 80. Ela nao seria o precursor da ideia de maquina virtual atual? Segundo me consta, chegaram a ser criadas ate prototipos em hardware do conceito da maquina lisp.

Um pouco mais proximo de java, e o SmallTalk? Ele tambem se embasa no conceito de maquina virtual, tem ate garbaga collectio, e eh anterior ao java.

Agora, com certeza, comercialmente o java eh a primeira maquina virtual a conquistar o mundo comercial, nao ha duvidas.

Olá

Tanque, vc está certo. E este assunto está longe de ter uma conclusão definitiva. É bem mais polêmico do que eu imaginava. Veja os links:
http://computing-dictionary.thefreedictionary.com/Virtual%20machine

http://burks.brighton.ac.uk/burks/foldoc/66/124.htm

http://c2.com/cgi/wiki?VirtualMachineDiscussion (Aqui os caras se pegam)

Mas de todo modo o cara da M$ disse bobagem porque na década de 60 não foi.

[]s
Luca

Ou eu entendi errado… :roll:
Mas as idéias sobre teoria da computação e computabilidade não são ainda mais antigas que isso? Um emulador de um video-game também não seria uma máquina virtual? O que é exatamente uma máquina virtual? Gostei desta definição abaixo da wikipedia:

Mas é claro que Java trouxe inovações nessa área.

Olá

Vinci, este conceito de virtual machine surgiu na metade da década de 70 quando computador ainda não era usado como vídeo game. Um emulador talvez possa ser considerado uma VM se bem que nunca tinha pensado nisto antes.

[]s
Luca