Von Java auf C# wechseln sinnvoll, Java und C# IMMER decompilebar?

...komplette Frage anzeigen

6 Antworten

Java Knowhow wird mit absoluter Sicherheit noch viele Jahre wertvoller sein als C# Knowhow.

Auch wird, wer Java gut kann, jederzeit auch mit C# umgehen können (.NET und C# entstanden als Microsoft-spezifischer Ersatz für Java, da Sun - als damaliger Eigentümer aller Rechte an Java - Microsoft verboten hatte, eine Microsoft-spezifische Java-Version auf den Markt zu bringen).

Heute wird der weitaus größte Teil aller für Großunternehmen entwickelten Applikationen in Java geschrieben.

Bitte lies auch https://www.quora.com/What-language-is-more-popular-in-large-corporations-C-or-Java .

Antwort bewerten Vielen Dank für Deine Bewertung
grtgrt 09.08.2016, 11:01

Decompiler gibt es für C# ebenso wie für Java.

1

Im Grunde kann man jedes Programm dekompilieren, den einen mehr, den anderen weniger schwer.

Welche Programmiersprache Du nutzt liegt ganz bei Dir, was Dir am besten liegt und womit Du mehr anfangen kannst.

Es ist immer von Vorteil mehrere Programmiersprachen zu beherrschen, eventuell braucht man ja mal eine andere für bestimmte Projekte oder Aufgaben.

Lerne also wenn Du magst beide Sprachen, es kann nicht schaden. =)

Gruß: Holger

Antwort bewerten Vielen Dank für Deine Bewertung

Nun bin ich bei Seite 100 und fange an einen Hass auf C++ zu bekommen, da ich keinen Sinn in Pointern sehe und mir einen Garbage Collector herbeisehne

Das wird sich spätestens dann ändern, wenn du mal etwas programmieren musst, wobei es tatsächlich auf Performance ankommt.

Du kannst ja mal versuchen, einen Server in Java zu schreiben, der mehr als eine Million parallele Anfragen verarbeitet. Bei so etwas kommst du um C oder C++ gar nicht herum.

Mit Java ist normalerweise bei max. 10000 gleichzeitigen Verbindungen Schluss. Mit C und C++ sind hingegen an die 10 Mio. möglich.

Du kannst dir also 1000 Server mit Java hinstellen, oder einen einzigen Server mit einer C++ implementierung, die im Endeffekt genau das selbe macht. (Welche der beiden Lösungen ist wohl wirtschaftlicher?)

Falls dich das Thema interessiert: Akamai macht es z. B. bei seinen Loadbalancern und Proxies genauso.

Und das ist nur EIN Thema. Solange es nicht zu sehr auf Performance ankommt, ist Java und C# aber sehr komfortabel. Das dürfte sogar in den meisten Situationen der Fall sein.

Aber sobald du auf einen halbwegs verlässlichen Programmablauf angewiesen bist, fällt der Einsatz eines GC schon mal flach. Du kannst zwar auch in Java und C# ohne GC arbeiten, aber das ist dann wieder ein anderes Thema. :)

Ansonsten denke ich, dass du sowohl Java, als auch C#, als auch C++ lernen solltest, denn nur so kannst du die Vorteile all dieser Sprachen auskosten.

Viel Spaß! :)

Antwort bewerten Vielen Dank für Deine Bewertung

Zukunft haben sie alle. Wenn du noch nicht genau weißt in welchem Beruf du programmieren möchtest, ist es in jedem Fall sinnvoll, sich mehrere Sprachen anzuschauen. Dabei geht es ja danach, was die Firma einsetzt, und nicht, was das modernste ist. Z.B. werden Cobol Entwickler händeringend gesucht, weil es niemand mehr kann, und die alten Entwickler alle in Rente gehen.

Antwort bewerten Vielen Dank für Deine Bewertung

Ich erkläre das mal eher mit dem Dekompilieren:

Erst mal kann man alles dekompilieren, auch C++ Code. Unterschied ist, dass man durch den C# und Java Bytecode fast das komplette Programm automatisiert wiederherstellen kann. Bei C++ muss man das Programm durch einen Disassembler werfen und aus diesem Code dann den C++ Code herleiten, das genaue Programm kann man aber kaum rekonstruieren und es ist weitaus zeitintensiver.

Man kann aber auch bei Java und C# den Code etwas schützen. Es gibt zahlreiche Obfuscators, welche den Code sehr unleserlich machen (Methodennamen zB nur noch a, b, c, etc). Dann kann man zwar wieder fertigen Source Code erhalten, aber das Programm zu verstehen wird erheblich schwieriger.
Noch effektiver sind AOT (Ahead of Time) Compiler wie Excelsior Jet für Java, diese Kompilieren das Programm direkt zu Maschinensprache. Dadurch ist der Dekompiliervorgang ungefähr auf dem Level von C++, aber es bringt auch Nachteile mit sich.

Zu C# wechseln bringt im Moment überhaupt nichts, außer du willst speziell Programme für Windows entwickeln. Denn ansonsten hat Java die weitaus wichtigere Position im Markt. Die Sprachen sind wirklich sehr ähnlich, da C# ein Java Klon von MS ist, nur eben für Windows optimiert. Java läuft auf Mac und Linux eindeutig besser.

Antwort bewerten Vielen Dank für Deine Bewertung

Hi, erst einmal vorweg, ich finds klasse, dass du diesen Berufsweg wählen möchtest. Ich bin selber leidenschaftlicher Softwareentwickler und habe das Programmieren schon in der Grundschule gelernt. Nun aber die Antworten auf deine Fragen:

Welche Sprache du benutzt, hängt immer davon ab, welche Probleme du damit lösen möchtest. Dabei hilft es zumindest grob zu wissen welche Sprachen worin besonders gut sind. Das lässt sich aber auch alles wunderbar googlen. Es gilt immer die Regel, Google is your friend und erfinde das Rad nicht neu ;)

Java und C# sind sehr ähnlich. Daher kommt es eigentlich mehr darauf an, ob du plattformunabhängig programmieren möchtest oder nur Anwendungen für Windows entwickeln möchtest. Für letzteres ist C# klar zu empfehlen, da es eben von Microsoft für Windows entwickelt wurde. 

C# und Java haben wohl beide einer sehr gute Zukunft. 

Und auch C# ist problemlos dekompilierbar. Als Empfehlung hierfür JetBrains dotPeek: https://www.jetbrains.com/decompiler/

Im Gegenzug dazu: Ja, es ist auch möglich den Code un-dekompilierbar zu machen. Dafür würde ich mal nach ".net obfuscator" googlen.

Im Endeffekt gilt grob, wenn du eine Sprache kannst, kannst du fast alle bzw. wird es dir zumindest sehr viel leichter fallen andere Sprachen zu lernen. 

Wenn du C# lernen möchtest, empfehle ich die das Buch C# von Kopf bis Fuß: https://www.oreilly.de/buecher/120075/9783955615963-c%23-von-kopf-bis-fu%C3%9F.html

Alles gute auf deinem Weg zum Software Entwickler ;)

Antwort bewerten Vielen Dank für Deine Bewertung
HalloLeben 09.08.2016, 10:21

Gute Antwort!

1
androhecker 09.08.2016, 15:37

Un-dekompilierbar niemals, nur schwer verständlich. Dekompiliert hat man es trotzdem in ein paar Sekunden.

0
Rock3t 09.08.2016, 16:46
@androhecker

Dem muss ich widersprechen. Es gibt tatsächlich Methoden den Code un-dekompilierbar zu machen. Allerdings wird man hierzu wahrscheinlich kein kostenloses Tool finden. 

.Net Reactor von Eziriz ist so eins: http://www.eziriz.com/dotnet_reactor.htm

Bisher gibt es keine Möglichkeit etwas zu dekompilieren, was da durch gejagt wurde ;)

0
CrystalixXx 09.08.2016, 17:35
@Rock3t

Das trifft nur auf den IL Code zu. Der dadurch erzeugte native Code kann nach wie vor dekompiliert werden - nur entsprechend schwieriger und aufwändiger.

0
androhecker 09.08.2016, 21:40

Natürlich geht das. Einmal durch den Disassembler und dann kann man den C# wieder rekonstruieren, ist zwar aufwendig, aber noch lange nicht unmöglich. (Nicht viel aufwendiger als C++ Code zu rekonstruieren)

0

Was möchtest Du wissen?