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

6 Antworten

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 ;)

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

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

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 .

grtgrt  09.08.2016, 11:01

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

1

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.

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.