PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fragen zu Mono



miketech
16.01.2005, 00:06
Hi zusammen,

ich beschäftige mich derzeit ein kleines wenig mit Mono, will nur mal reinschnuppern, was das denn nun so genau ist :) Ich habe bereits im Internet etwas gelesen und auch ein paar FAQs durchgeschaut, aber ich habe noch ein paar Fragen. Vielleicht kennt sich hier ja jemand mit Mono aus:

Ich habe gehört, dass es mit Mono möglich sein soll, Code von verschiedenen Sprachen wiederzuverwenden. D.h. wenn nun jemand seinen Code mit Visual Basic .NET und ein anderer mit C# programmiert hat, kann der Code untereinander ausgetauscht werden. Wie ist das möglich?

Die Programme werden offensichtlich ähnlich wie bei Java von einer Virtual Machine ausgeführt korrekt? Ist der Code dann auch wie bei Java wiederherstellbar? Bei Java war es ja ByteCode, der mit wenig Umstand wieder in den eigentlich Quellcode umgewandelt werden konnte. Ist das hier auch möglich?

Ich habe gelesen, dass geplant war im 4. Quartal 2004 eine vollständige Implementierung der Winforms unter Linux zu ermöglichen. Bisher war das ja nicht so ideal. Angenommen die Implementierung wäre nun fertig: Wieso dann noch gtk# nehmen? Wenn ich mein Programm mit gtk# unter Windows zum laufen bringen möchte, muss der/diejenige ja erst gtk installieren, damit das Programm läuft. Mit Winforms würde es doch auf Anhieb funktionieren, oder?

Wird es unter Linux noch weitere Sprachen geben, mit denen man Mono nutzen kann? Bisher ist es ja ausschließlich C#. Mono ist doch im Grunde nur eine Klassenbibliothek, oder? Mit Bindings für verschiedene Sprachen anschließend, bzw. die Virtual Machine kann verschiedene Sprachen interpretieren. Im aktuellen Fall eben C#.

Auch wenn ich in den FAQs gelesen habe, dass nur bedingt Gefahr für das Mono - Projekt seitens Microsoft besteht würde ich gerne Eure Meinung dazu hören. Ich denke ja, dass Microsoft das jetzt erstmal in Ruhe anschaut, damit es sich verbreitet, aber irgendwann schon noch den Hammer ausfährt.

Wie ist Mono im Vergleich zu Java? Die Syntax ähnelt sich, es ist auch eine VM. Wie ist es von der Performance?

So das wars erstmal :)

Gruß

Mike

pinky
16.01.2005, 00:56
Immer diese Nachtaktiven ;)



Ich habe gehört, dass es mit Mono möglich sein soll, Code von verschiedenen Sprachen wiederzuverwenden. D.h. wenn nun jemand seinen Code mit Visual Basic .NET und ein anderer mit C# programmiert hat, kann der Code untereinander ausgetauscht werden. Wie ist das möglich?


Die Grundidee ist halt das die cli im Gegensatz nur java-vm nicht auf eine Sprache festgelegt ist. Du kannst also in verschiedenen Sprachen dein Programm schreiben und die cli kann es jedesmal ausführen. Natürlich muß für die Sprache ein mono compiler existieren.



Die Programme werden offensichtlich ähnlich wie bei Java von einer Virtual Machine ausgeführt korrekt?
Ist der Code dann auch wie bei Java wiederherstellbar? Bei Java war es ja ByteCode, der mit wenig Umstand wieder in den eigentlich Quellcode umgewandelt werden konnte. Ist das hier auch möglich?


in einer gewissen Form wird das schon möglich sein, wie lesbar das dann ist ist eine andere Frage.
Aber eigentlich kein Problem, bei vernünftigen Programmen ist der Quellcode sowieso dabei. ;)



Ich habe gelesen, dass geplant war im 4. Quartal 2004 eine vollständige Implementierung der Winforms unter Linux zu ermöglichen. Bisher war das ja nicht so ideal. Angenommen die Implementierung wäre nun fertig: Wieso dann noch gtk# nehmen?


naja, ob das mit dem winforms so schnell gehen wird? Ich denke da haben sie sich ein sehr ehrgeiziges Ziel gesetzt.
Warum gtk#? Weil winforms immer auf windows ausgelegt sein wird und du damit nie Programme schreiben kannst die sich wirklich in einen GNU/Linux Desktop integrieren. Bei Gtk# hast du alle Vorteile von Gtk und gnome und kannst gnome und Gtk Programme schreiben die auch wirklich im System nachher integriert sind und alle Vorteile nutzen wie mit anderen Sprache auch.
winforms ist ganz nett wenn jemand seine windows Programme nach GNU/Linux mitnehmen will, aber wenn man unter und für GNU/Linux entwickelt ist Gtk# immer erste Wahl.



Wenn ich mein Programm mit gtk# unter Windows zum laufen bringen möchte, muss der/diejenige ja erst gtk installieren, damit das Programm läuft. Mit Winforms würde es doch auf Anhieb funktionieren, oder?


er braucht mono, da ist dann schon alles dabei. Wenn er .Net hat, dann muß er zusätzlich Gtk# installieren. In Zukunft wird es auch eine Möglichkeit geben alles nötige statisch zu linken. Dann hast du am Ende eine .exe die überall läuft, auch ohne installiertem mono oder .Net!



Wird es unter Linux noch weitere Sprachen geben, mit denen man Mono nutzen kann? Bisher ist es ja ausschließlich C#.


VB.Net wird es auf jedenfall noch geben, existiert glaube ich sogar schon zu einem gewissen Teil. Zumindest gibt es in der mono-docu auch schon kleine basic Beispiele.



Auch wenn ich in den FAQs gelesen habe, dass nur bedingt Gefahr für das Mono - Projekt seitens Microsoft besteht würde ich gerne Eure Meinung dazu hören. Ich denke ja, dass Microsoft das jetzt erstmal in Ruhe anschaut, damit es sich verbreitet, aber irgendwann schon noch den Hammer ausfährt.


Ich sehe da kein großes Problem, auch wenn viele immer gerne über MS große Panik verbreiten. Ein Großteil ist EMCA Standard und wird nichtmal von MS alleine weiterentwickelt! Abgesehen davon sind das alles keine neuen Sachen, die Chance das also wirklich vor Gericht durchzusetzen ist sehr gering.
Ausserdem steht hinter Mono Novell, die haben auch ihre Anwälte und werden sicher nicht in etwas investieren was eine unsichere Zukunft hat. Neben Mono gibt es auch noch dotGNU vom GNU-Projekt die haben auch ihre Anwälte und kennen sich mit den ganzen Patent und Urheberrechtssachen sehr gut aus, wenn es da ernsthafte Probleme geben würde, dann hätte man sicher nicht so ein Projekt angefangen.

worst case szenario: Angenommen MS kann Patente in Zukunft auf ein paar Teile von .Net durchsetzen (was ich wie oben beschrieben nicht glaube). Dann ist es kein großes Problem. Mono ist in erster Linie ein eigenes Projekt, inspiriert von .Net und natürlich mit dem interesse so kompatibel wie möglich zu bleiben. In erster Linie geht es aber nicht um MS, windows oder .Net sondern darum eine ellegante und schöne Möglichkeit für die Entwicklung unter GNU und BSD Systemen zu schaffen. Wenn es also soweit kommt, dann werden Mono und .Net an manchen Punkten getrennte Wege gehen. Das beeinflusst die ganze Entwicklung unter GNU und BSD Systemen aber nicht. Man wird ja sehen was die Leute dann annehmen, .Net das nur auf windows läuft oder Mono (was fast das gleiche sein würde) mit dem man machen kann was man will (Freie Software) und das auf allen denkbaren Plattformen läuft. Selbst wenn wir jetzt weiter den worst case durchspielen und sagen, dass man sich hier für .Net entscheiden würde. Dann wäre halt .Net die Entwicklungsumgebung für windows, hier in der GNU, BSD und Unix Welt wären wir trotzdem um eine sehr gute und ellegante Entwicklungsumgebung reicher.

avaurus
16.01.2005, 01:10
ich empfinde auch eine gewisse Neugier bei Mono, aber wieso gibt es das Projekt dotGnu ? Werden unterschiedliche Ziele angestrebt?
Falls nicht, könnte man sich doch besser zusammenschließen oder nicht?

miketech
16.01.2005, 01:17
Immer diese Nachtaktiven ;)



Die Grundidee ist halt das die cli im Gegensatz nur java-vm nicht auf eine Sprache festgelegt ist. Du kannst also in verschiedenen Sprachen dein Programm schreiben und die cli kann es jedesmal ausführen. Natürlich muß für die Sprache ein mono compiler existieren.




Kann ich auch mehrere Sprachen gleichzeitig kompilieren? D.h. dem Compiler zwei Quellcode-Files in verschiedenen Sprachen übergeben? Dann wäre es mir verständlich, wie man Code aus anderen Sprachen wiederverwenden kann.




in einer gewissen Form wird das schon möglich sein, wie lesbar das dann ist ist eine andere Frage.
Aber eigentlich kein Problem, bei vernünftigen Programmen ist der Quellcode sowieso dabei. ;)



Naja es sollte aber doch möglich sein, mit Mono kommerzielle Software zu entwickeln oder? Bei Java bekomm ich fast den originalen Quellcode zurück, ob das bei Mono auch so ist? Natürlich sind die besten Sachen Open Source, ist klar ;)






naja, ob das mit dem winforms so schnell gehen wird? Ich denke da haben sie sich ein sehr ehrgeiziges Ziel gesetzt.
Warum gtk#? Weil winforms immer auf windows ausgelegt sein wird und du damit nie Programme schreiben kannst die sich wirklich in einen GNU/Linux Desktop integrieren. Bei Gtk# hast du alle Vorteile von Gtk und gnome und kannst gnome und Gtk Programme schreiben die auch wirklich im System nachher integriert sind und alle Vorteile nutzen wie mit anderen Sprache auch.
winforms ist ganz nett wenn jemand seine windows Programme nach GNU/Linux mitnehmen will, aber wenn man unter und für GNU/Linux entwickelt ist Gtk# immer erste Wahl.



Naja, aber sind alle Funktionen, die ich unter Linux mit Gtk# und Gnome baue dann auch unter Windows aktiv? Vermutlich nicht oder? Dann hätte ich das Problem genau andersrum.





er braucht mono, da ist dann schon alles dabei. Wenn er .Net hat, dann muß er zusätzlich Gtk# installieren. In Zukunft wird es auch eine Möglichkeit geben alles nötige statisch zu linken. Dann hast du am Ende eine .exe die überall läuft, auch ohne installiertem mono oder .Net!



Das mit den statischen Anwendungen ist natürlich scharf. Ich finds nur etwas irritierend, dass ich unter Linux auch .exe-Files habe. Muss das so sein? *g* Nur, damits unter Windows auch startet oder?





VB.Net wird es auf jedenfall noch geben, existiert glaube ich sogar schon zu einem gewissen Teil. Zumindest gibt es in der mono-docu auch schon kleine basic Beispiele.



Ja dazu habe ich Beispiele gesehen. Weißt Du, ob für Scriptsprachen eventuelle Bindings geplant sind? Z.B. Perl oder so?





Ich sehe da kein großes Problem, auch wenn viele immer gerne über MS große Panik verbreiten. Ein Großteil ist EMCA Standard und wird nichtmal von MS alleine weiterentwickelt! Abgesehen davon sind das alles keine neuen Sachen, die Chance das also wirklich vor Gericht durchzusetzen ist sehr gering.
Ausserdem steht hinter Mono Novell, die haben auch ihre Anwälte und werden sicher nicht in etwas investieren was eine unsichere Zukunft hat. Neben Mono gibt es auch noch dotGNU vom GNU-Projekt die haben auch ihre Anwälte und kennen sich mit den ganzen Patent und Urheberrechtssachen sehr gut aus, wenn es da ernsthafte Probleme geben würde, dann hätte man sicher nicht so ein Projekt angefangen.

worst case szenario: Angenommen MS kann Patente in Zukunft auf ein paar Teile von .Net durchsetzen (was ich wie oben beschrieben nicht glaube). Dann ist es kein großes Problem. Mono ist in erster Linie ein eigenes Projekt, inspiriert von .Net und natürlich mit dem interesse so kompatibel wie möglich zu bleiben. In erster Linie geht es aber nicht um MS, windows oder .Net sondern darum eine ellegante und schöne Möglichkeit für die Entwicklung unter GNU und BSD Systemen zu schaffen. Wenn es also soweit kommt, dann werden Mono und .Net an manchen Punkten getrennte Wege gehen. Das beeinflusst die ganze Entwicklung unter GNU und BSD Systemen aber nicht. Man wird ja sehen was die Leute dann annehmen, .Net das nur auf windows läuft oder Mono (was fast das gleiche sein würde) mit dem man machen kann was man will (Freie Software) und das auf allen denkbaren Plattformen läuft. Selbst wenn wir jetzt weiter den worst case durchspielen und sagen, dass man sich hier für .Net entscheiden würde. Dann wäre halt .Net die Entwicklungsumgebung für windows, hier in der GNU, BSD und Unix Welt wären wir trotzdem um eine sehr gute und ellegante Entwicklungsumgebung reicher.


Naja, da Novell dahintersteht ist es schon etwas sicherer, dass da nicht allzuviel schief geht. Die werden sich ja vorher absichern und im Notfall mit Anwälten kontern. Das ist noch ein Grund eher gtk# statt den Winforms zu verwenden. Gtk# ist ja nicht von Microsoft, die Winforms hingegen schon.

Die Sprache C# ist aber prinzipiell eine Entwicklung von Microsoft oder?

Gruß

Mike

pinky
16.01.2005, 01:21
ich empfinde auch eine gewisse Neugier bei Mono, aber wieso gibt es das Projekt dotGnu ? Werden unterschiedliche Ziele angestrebt?
Falls nicht, könnte man sich doch besser zusammenschließen oder nicht?

Ich glaube sie sind damals ziemlich Zeitgleich gestartet. Es ist ja auch nicht schlecht zwei Eisen im Feuer zu haben falls sich das eine oder andere nicht so entwickelt wie geplant. Soviel ich weiß hat dotGNU z.B. van Anfang an mehr auf die winforms gesetzt, während mono jetzt erst damit langsam voran kommt. Ansonsten denke ich das sie zum Teil unterschiedliche Ansätze haben als auch in gewissen Bereichen sicher Code untereinander austauschen. In den FAQs der beiden Projekte steht da afaik auch was dazu.

miketech
16.01.2005, 01:26
Hi,

ich habe grad gesehen, dass es sogar sowas gibt wie wx.NET. Wie schaut gtk denn unter Windows und MacOS X aus? Sieht das native aus? wxWidgets nutzt ja unter Windows die original Windows Libraries, statt alles selbst zu zeichnen, wie z.B. Gtk.

Gruß

Mike

pinky
16.01.2005, 01:28
Kann ich auch mehrere Sprachen gleichzeitig kompilieren? D.h. dem Compiler zwei Quellcode-Files in verschiedenen Sprachen übergeben? Dann wäre es mir verständlich, wie man Code aus anderen Sprachen wiederverwenden kann.


bin ich mir nicht sicher, müsstest du mal nach Informationen suchen.



Naja es sollte aber doch möglich sein, mit Mono kommerzielle Software zu entwickeln oder?


Das hat doch aber nichts mit dem Quellcode zu tun... :D



Natürlich sind die besten Sachen Open Source, ist klar ;)


nein, Freie Software ist besser ;)



Naja, aber sind alle Funktionen, die ich unter Linux mit Gtk# und Gnome baue dann auch unter Windows aktiv? Vermutlich nicht oder? Dann hätte ich das Problem genau andersrum.


ja und nein. ja, derzeit kann es noch sein das gewisse Teile unter windows nicht funktioniere. Nein, das wird in Zukunft behoben sein. Bei gtk/gnome gibt es nicht so die strikte Trennung wie bei kde (kdelibs/qtlibs) langfristig bis mittelfristig werden die "gnomelibs" fast vollständig aufgelöst. Und alles was möglich ist wird es für alle Plattformen geben. Natürlich ist das nicht für alles möglich (z.B. gnome-vfs). Aber auch auf der windows Seite hast du Sachen die du verwenden kannst die nachher nichtmehr portabel sind. Ab einer gewissen integration in ein System deiner Wahl wirst du immer auf der anderen Seite einbußen in der portabilität hinnehmen müssen.



Das mit den statischen Anwendungen ist natürlich scharf. Ich finds nur etwas irritierend, dass ich unter Linux auch .exe-Files habe. Muss das so sein? *g* Nur, damits unter Windows auch startet oder?


ja stimmt, daran habe ich mich auch erst gewöhnen müssen. Aber man mus sich halt am schwächsten System orientieren und das verlangt feste Dateiendungen :D




Die Sprache C# ist aber prinzipiell eine Entwicklung von Microsoft oder?


initiiert wäre das richtige Wort. Mittlerweile wird sie als offener Standard unter der EMCA entwickelt und da ist nicht nur MS dabei, u.a. auch Leute von novell.

pinky
16.01.2005, 01:33
ich habe grad gesehen, dass es sogar sowas gibt wie wx.NET.


naja, die wx* Sachen sind eben immer so eine Sache, hoch portabel, dafür aber auch nirgends wirklich zu Hause und sehen immer auch etwas fremd aus. Wie bereits gesagt. 100% Portabilität und 100% integration in ein bestehendes System wirst du nie hinbekommen.



Wie schaut gtk denn unter Windows und MacOS X aus? Sieht das native aus? wxWidgets nutzt ja unter Windows die original Windows Libraries, statt alles selbst zu zeichnen, wie z.B. Gtk.


hatten wir afaik schonmal in der Toolkit Diskussion. Also ab win2k sehen die aktuellen GTk Programme zu 99% wie windows Programm aus, gleiches gilt für MacOSX

Kannst ja mal nach screenshots suchen, hier gibt es ab und zu auch screenshots von windows und mac und nebenbei erfährt man was es neues in der Entwicklung gibt: http://www.go-mono.com/monologue/

miketech
16.01.2005, 01:37
Hi,

also gibt es im Grunde nichts, was gegen Mono spricht. Ich hab nämlich schon oft in Buchhandlungen Bücher zu C# und dem ganzen .NET gesehen und oft nen großen Bogen drumrum gemacht. .NET dürfte eigentlich weniger interessant sein von Microsoft, da hier bestimmt primär auf Winforms usw. eingegangen wird. Interessanter könnte C# mit Gtk# sein. Literatur zu Gtk# hab ich jedoch noch nie gesehen, aber benötigt man ja nicht, bei entsprechender Online-Doku.

Im Standard von C# sind doch auch Funktionen für Netzwerkprogrammierung enthalten oder? Also im Grunde haben wir hier dasselbe, was wir von Java her kennen, eine allround - Sprache, die jedoch keiner Firma gehört, sondern standardisiert wird. Sind die Netzwerkfunktionen und z.B. Threadprogramming auch im Standard festgehalten?

Dann könnte das ganze wirklich interessant werden. Zusammen mit Gtk# eine schöne Mischung.

Gruß

Mike

pinky
16.01.2005, 01:44
Ja, du hast es im Prinzip richtig zusammengefasst. Auch die ganzen ASP.NET Sachen (webservice) gibt es von Mono. Wirklich ein tolles und freies rundum Packet, wie java nur besser ;)

Wenn du ein paar EUR in ein Buch investieren willst, dann kann ich dir das hier empfehlen: http://www.bookzilla.de/shop/action/productDetails?aUrl=90006951&artiId=2861775

Wirklich sehr gut! Behandelt alles wichtige (auch die webservice Sachen, XML, Threads usw.) und hat einen großen Gtk# Teil.

miketech
16.01.2005, 01:55
Hi,

danke für den Tipp. Habs mir mal notiert und werde in den nächsten Semesterferien wohl darauf zurückkommen :)

Gruß

Mike

thorus
16.01.2005, 10:11
Ja dazu habe ich Beispiele gesehen. Weißt Du, ob für Scriptsprachen eventuelle Bindings geplant sind? Z.B. Perl oder so?
Ich denke eher nicht, dass so etwas für Perl entwickelt wird. Allerdings wird für Perl6 zur Zeit Parrot (http://www.parrotcode.org/) entwickelt, eine kleiner assemblerähnliche Sprache samt Interpreter. Im Prinzip ist das sowas wie .Net CLI und Java Bytecode.
Es wird auch mit dem Gedanken gespielt, Python parrotfähig zu machen.

Aber für Python selbst gibt es schon eine .Net- & Mono-Implementierung: IronPython (http://ironpython.com/)
Ausserdem lässt sich Python auch in Java verwenden: Jython (http://www.jython.org/)
Python deckt praktisch, neben seinen normal CPython Interpreter, der auch auf vielen Plattformen läuffähig ist, auch die wichtigsten VMs ab. ;)

miketech
16.01.2005, 11:18
Hi,

also damit die Windows-Anwendungen weitestgehend portabel auf Linux sind, ist es schon wichtig, dass unter Linux mehr Sprachen als nur C# unterstützt werden. Wenn Visual Basic .NET läuft ist schonmal einiges gewonnen denke ich. Fehlen natürlich noch die Winforms, aber das soll ja bald zumindest einigermaßen gehen.

Zum Wiederherstellen des Codes: Unter Java hieß es, dass der Code wiederherstellbar sein muss, weil die JVM den ja auch interpretieren muss. *schulterzuck* Ich kann mir nicht vorstellen, dass Microsoft so etwas ermöglicht. Gerade wenn große kommerzielle Produkte damit hergestellt werden sollen ist es denke ich wichtig, dass der Code nicht wiederherstellbar ist.

Sollte er es doch sein, gibt es entweder wenige Firmen, die es benutzen, oder wir haben bald ganz viele Programme als "open source" vorliegen ;))

Also ich muss sagen, dass sich meine ganze Skepsis gegenüber C# und .NET an zwei Tagen umgekehrt hat. Bis vor 2 Tagen habe ich einen großen Bogen um diese Sache gemacht, aber jetzt finde ich es durchaus interessant, gerade für GUI-Anwendungen. Für Serveranwendungen finde ich es jetzt nicht soo, aber mit ASP.NET müssten sich ja dann auch einige Sachen entwickeln lassen.

Wo ist denn der Unterschied zu zwischen ASP.NET und z.B. PHP? ASP geht mehr in Richtung J2EE oder? Ich habe schon Mono-Plugins für Apache gefunden.

Gruß

Mike

miketech
16.01.2005, 11:45
Ach und die Performance würde mich noch interessieren. Hat jemand mal Vergleiche zu C++ und insbesondere Java gefunden? Java hat mich von der Geschwindigkeit nicht immer überzeugt. Gerade bei GUI-Anwendungen. Das könnte ja mit Gtk# besser sein.

Ich hab nur das hier gefunden:

http://weblogs.cs.cornell.edu/AllThingsDistributed/archives/000052.html

Und das ist schon einige Zeit her. Kann sich ja einiges getan haben in der Zwischenzeit.

Wofür steht eigentlich CLI? Was genau ist das bei .NET?

Gruß

Mike

thorus
16.01.2005, 13:00
Wofür steht eigentlich CLI? Was genau ist das bei .NET?
Das steht für Common Language Infrastructure und ist die Sprache, die .Net zugrunde liegt. Die ganzen Compiler wandeln den Sourcecode in diese Sprache um, um ihn dann durch den Interpreter zu jagen. ;) Deswegen kann man auch Code von anderen Programmiersprachen benutzen.
http://de.wikipedia.org/wiki/Common_Language_Infrastructure

miketech
16.01.2005, 13:42
Hi,

k danke. Ich les grad den Artikel auf Wikipedia. Aber da kommen mir noch ein paar Fragen auf:

Microsoft hat dieses ganze .NET ja angefangen, um gegen Java eine Chance zu haben. Wenn man nun .NET unterstützt unterstützt man ja auch Microsoft gegen Java. Nicht, dass ich jetzt ein großer Freund von Java bin, aber von Microsoft auch nicht.

Microsoft bringt demnächst die Version 2.0 von .NET heraus. Was ändert sich dann jetzt wieder? Muss nicht Mono dann immer hinter Microsoft herrennen, um auf dem aktuellen Stand zu bleiben? Microsoft wird doch ännlich wie beim Internet Explorer irgendwann anfangen, eigene Standards zu implementieren. D.h. dann wars das mi der Plattformunabhängigkeit wieder, oder?

Ich bin skeptisch, weil das ganze einfach zu gut klingt. Das ist nicht die Art von Microsoft, der Gemeinschaft irgendwie zu helfen. Ich denke, die freuen sich, dass es sich verbreitet und dass die Linuxer vielleicht auch mit .NET arbeiten. Aber dann fangen sie irgendwann an, sich vom Rest zu lösen, damit die Linuxer irgendwie (Wie auch immer das dann abläuft) doof und alleine mit ihrer Sprache dastehen.

Bei den Browsern hatten wir ja was ähnliches: Microsoft hält sich nicht an Absprachen. Sie fangen irgendwann an und machen das, was sie brauchen, weil sie den Standard bestimmen mit ihrem Marktanteil.


Mike

miketech
16.01.2005, 13:45
Ach und hier steht auch folgendes:

Das Sicherheitskonzept von .NET fängt an bei Mechanismen, die die Identität des Programmherstellers gewährleisten sollen (Authentizität), geht über Mechanismen zum Schutz der Programme vor Veränderung (z.B. vor Programmviren) bis hin zu Schutzmechanismen, die den Ort der Herkunft bzw. Programmausführung (z.B. Internet) einbeziehen.


Ich weiß nicht, inwieweit Mono da mitspielt. Aber das riecht schon wieder so nach Digital Rights Management. Microsoft bestimmt dann, wo ihre Software läuft.

If (VM == Mono) {
exit(0);
}

Mike

pinky
16.01.2005, 13:51
Wie gesagt, ein großteil wurde von MS dem EMCA zur Standardisierung vorgelet und da arbeitet jetzt nicht nur MS dran. Was sollst wenn MS .NET (was ja quasi die ganze Distribution ist um es mal im GNU/Linux jargon zu sagen) ein paar Module einbaut die spezielle Sachen unter windows machen?
Dafür haben wir hier unter GNU/Linux die gnome und Unix Anbindung die auch nicht ohne weiteres auf windows läuft.

Ich zitiere mich einfach mal selber:



worst case szenario: Angenommen MS kann Patente in Zukunft auf ein paar Teile von .Net durchsetzen (was ich wie oben beschrieben nicht glaube). Dann ist es kein großes Problem. Mono ist in erster Linie ein eigenes Projekt, inspiriert von .Net und natürlich mit dem interesse so kompatibel wie möglich zu bleiben. In erster Linie geht es aber nicht um MS, windows oder .Net sondern darum eine ellegante und schöne Möglichkeit für die Entwicklung unter GNU und BSD Systemen zu schaffen. Wenn es also soweit kommt, dann werden Mono und .Net an manchen Punkten getrennte Wege gehen. Das beeinflusst die ganze Entwicklung unter GNU und BSD Systemen aber nicht. Man wird ja sehen was die Leute dann annehmen, .Net das nur auf windows läuft oder Mono (was fast das gleiche sein würde) mit dem man machen kann was man will (Freie Software) und das auf allen denkbaren Plattformen läuft. Selbst wenn wir jetzt weiter den worst case durchspielen und sagen, dass man sich hier für .Net entscheiden würde. Dann wäre halt .Net die Entwicklungsumgebung für windows, hier in der GNU, BSD und Unix Welt wären wir trotzdem um eine sehr gute und ellegante Entwicklungsumgebung reicher.

miketech
16.01.2005, 13:56
Ja klar, aber dann haben wir eben einfach eine neue Sprache unter Unix, die eben interpretiert wird, aber die ganze Plattformunabhängigkeit ist weitestgehend dahin.

Dann kann ich auch C++ mit STL und Gtk schreiben und bin genauso weit, nur dass ich auf Windows neu kompilieren muss.

Und zusätzlich habe ich einem großen Softwarekonzern geholfen, seine Plattform zu verbreiten, indem ich sie nutze.

Gruß

Mike

pinky
16.01.2005, 14:01
Ja klar, aber dann haben wir eben einfach eine neue Sprache unter Unix, die eben interpretiert wird, aber die ganze Plattformunabhängigkeit ist weitestgehend dahin.


Wieso, mono lauft auf jeder Plattform!



Und zusätzlich habe ich einem großen Softwarekonzern geholfen, seine Plattform zu verbreiten, indem ich sie nutze.


nein, du hast nie .Net benutzt sondern Mono!
Das wäre genauso wie wenn du sagen würdest, durch die verwendeung des g++ unterstütze ich MS und ihren C++-Kompiler, weil deine Programme, wenn in ANSI-C++ geschrieben, auch unter windows übersetzt werden können.

Selbst wenn wir diesen feinen Unterschied nicht beachten, dann glaube ich kaum das du durch die Wahl der Programmiersprache für deine GNU/Linux Programme MS in irgendeiner Form hilfst. Selbst wenn wir das wieder nicht akzeptieren und einfach mal deiner Annahme folgen, dann haben wir halt MS für die Verbreitung von .Net auf ihrer Plattform geholfen, und? Denkst du wirklich MS braucht uns um Entscheidungen für ihre Plattform zu treffen oder durchzusetzen?

Da hilfst du sun deutlich mehr ihr proprietäres System durchzusetzen wenn du java verwendest, weil das ist für alle Plattformen, auch unseres, ausgelegt ist.

miketech
16.01.2005, 16:01
Hm, das heißt im Grunde: Programmiere ich Mono, laufen meine Anwendungen eigentlich grundsätzlich überall, wo Mono installiert ist. Hat jemand auf Windows .NET installiert läuft es auch, es seidenn mein Programm nutzt Gtk#. Dann muss er entweder Mono oder noch Gtk installieren. Wie ist das mit den Gnome-Libs? Sind die bei Mono dabei? Was muss die Person installieren, wenn sie .NET installiert hat?

Das schlimmste, was passieren kann ist, dass die Anwendungen von Windows nicht unter Linux laufen, weil die .NET Implementierung weiter ist, als Mono, oder sich .NET nicht mehr an Standards hält, oder die Windows-Anwendung zuviele windows-spezifische Funktionen nutzt.

Kann ich denn mit Mono bzw. C# überhaupt Funktionen nutzen, die es unter Windows nicht gibt? Die also unter Windows, auch wenn er Mono installiert nicht laufen?

Gruß

Mike

pinky
16.01.2005, 17:26
Wie ist das mit den Gnome-Libs? Sind die bei Mono dabei? Was muss die Person installieren, wenn sie .NET installiert hat?


die meisten "gnome-libs" sind bei gtk# dabei
http://gtk-sharp.sourceforge.net/faq.html



Kann ich denn mit Mono bzw. C# überhaupt Funktionen nutzen, die es unter Windows nicht gibt? Die also unter Windows, auch wenn er Mono installiert nicht laufen?


ja, wenn du z.B. dein Programm in gnome integrieren willst und Sachen wie gnome-vfs oder gconf verwendest oder irgendwelche libs (z.B. gettext) einbindest oder wenn du vielleicht spezielle Unix Sachen verwendest die in Mono.Posix drin sind.

Wie schonmal gesagt: 100% integration und 100% Portabilität wird es nie geben. Entweder du willst 100% Protabiliät, dann darfst du nichts Systemspezifisches machen oder du willst 100% Integration, dann wird die Anzahl der unterstützten Systeme kleiner oder du triffst dich irgendwo in der Mitte.

miketech
16.01.2005, 17:34
Hi,

yup schon klar, ich will nur versuchen rauszufinden, wo die systemspezifischen Dinge sind, d.h. woran ich erkenne, was ich benutzen darf und was nicht.

Ich habe z.B. eben eine Gtk# Anwendung geschrieben und versuche diese unter Windows laufen zu lassen. Bei der Mono-Installation ist Gtk# dabei, d.h. der Anwender muss nur das 26 MB große Paket runterladen. "nur" :) Ist ja einmalig.

.NET wird ja in Zukunft wohl in Windows integriert sein, d.h. der Anwender müsste nur noch gtk# installieren oder?

Und solange ich dann nur mit Gtk rumbastel und Gnome außen vor lasse sollte alles laufen. Und wenn ich nur Konsolen-Anwendungen schreibe sollte es sogar unter .NET dirket gehen, korrekt?

Mike

pinky
16.01.2005, 17:41
Naja, pauschal kann man das nicht sagen. Vorsichtig mußt du zumindest sein wenn du was aus Gnome. oder Mono.Posix verwendest. Vieles aus Gnome. läuft auch unter windows aber eben nicht alles. Was aber (überwiegend) eine temporäre Situation ist. GtkHTML gibt es auch noch nicht für windows.

Das kommt halt letztlich auf deine Prioritäten an. Ich persönlich programmiere in erster Linie für die GNU, BSD und Unix Plattform und will da auch die volle Leistung nutzen. Wenn das Programm dann out-of-the-box oder mit wenig Änderungen auch unter windows läuft ist es schön, ich lasse mir von windows aber nicht den Spaß nehmen oder tolle Features vorenthalten. ;)

Wenn ich natürlich gezieht etwas für jemanden mache der es unter windows Benutzen will, dann achte ich darauf, dass kommt aber nicht sehr oft vor.

miketech
16.01.2005, 18:18
ok, alles klaro. Ich hab gesehen, dass es sogar die Gecko Engine für Mono gibt. Das finde ich persönlich ziemlich scharf :)

Weiß nicht, inwiefern ich diese auch mit gtkmm oder anderen gtk Bindings nutzen kann, aber ich hatte sowas vor einigen Jahren in Delphi mit ner InternetExplorer-Komponente und fand das ziemlich genial, wenn man mal eine Anwendung schreiben wollte, die mal ne Webseite anzeigen soll.

Unter Linux hab ich das dann bei Java und Qt immer etwas vermisst.

Gruß

Mike

hehejo
21.02.2005, 19:22
Jetzt will ich doch auch mal meinen Senf dazu geben.

Das mit den verschiedenen Sprachen funktioniert imho nur in verschiedenen Assemblys.
Z.B. kannst du die eine Klasse in C# und die andere in VB.NET schreiben und beide können sich gegenseitig nutzen.
Das geht auch mit C++, dann aber nur wenn du Managed Code schreiben lässt.

michaeljk
30.10.2005, 20:23
Hallo,

entschuldigt das ich diesen alten "Topic" nochmal rauskrame, ich habe über eine Suchmaschine hierher gefunden.

Zur Zeit stehe ich vor der Entwicklung einer neuen Software, die unter Linux und Windows lauffähig sein soll. Hierbei möchte ich unter Linux GTK2 nutzen, unter Windows sollen die Benutzer die gewohnte Umgebung sehen (also nicht diese Effekte wie bei GTK1, das es deutliche Unterschiede im Erscheinungsbild gibt).

Ich habe bereits bei Google ein wenig rumgesucht, wurde aber nicht so richtig fündig - folgende Fragen stellen sich mir:

1. Eine Möglichkeit wäre, C/C++ und GTK2 zu verwenden. In diesem Fall muss GTK2 auf dem Windows-/Linux-System jeweils installiert sein, nach einer neuen Programmversion ist natürlich ein recompile auf dem jeweiligen Endsystem notwendig. Ich suche in diesem Zusammenhang Screenshots zum Vergleich - insbesondere interessiert mich, wie ein auf GTK2 erstelltes Programm unter Windows/Linux dann aussieht.

2. Zweite Möglichkeit: Mono + GTK#. Hier stellt sich mir dieselbe Frage des Erscheinungsbildes wie bei Punkt 1, da die Oberfläche unter Windows dann auch GTK-basierend wäre. Zusätzlich bin ich mir bei .net-Anwendungen derzeit unsicher, was die Implementierung von Datenbankzugriffen und Reports (zum ausdrucken) anbelangt: Habe ich bei Mono/GTK# die Möglichkeit, auf eine MySQL-Datenbank zuzugreifen? Wenn ich diese Anwendung unter Linux erstelle und auf Windows umkopiere, läuft dann ebenso die Datenanbindung ohne Zusatz-Libs, oder sind bei beiden Varianten Besonderheiten wegen der MySQL-Verknüpfung zu erwarten? Ebenso bei Ausdrucken - wie könnte man diese unter Mono/GTK# einfach erstellen, so das diese unter beiden Systemen anstandslos laufen?

Mir fehlt in diesem Punkt noch etwas die Erfahrung mit .net und Crossplattform-Entwicklung. Bei reinen GTK2-Programmen würden einfach die entsprechenden MySQL-Libs eingebunden werden entsprechend dem Zielsystem, compiliert und fertig - nur ob dies bei .NET genauso einfach geht? ;-)

3. Der folgende Screenshot hat mich noch beeindruckt:

http://wxnet.sourceforge.net/screenshots/

Damit wäre das Problem des "Aussehens" von dem jeweiligen Programm natürlich gelöst, die Portabilität ebenso. Habe aber leider keine Erfahrung mit wxWidgets und es stellen sich mir hierbei dieselben Fragen wie unter Punkt 2.

4. Welche Programme nutzt man am besten, um unter GTK# die UI zu erstellen? Genügt hierfür glade?

Ich möchte eben sicherstellen, das ich für die Zukunft eine Entwicklungsplattform wähle, mit der ich am wenigsten Probleme bekomme und mich ganz aufs Programmieren stürzen kann :-) Da bei künftigen Windows-Versionen sicherlich .NET immer Bestandteil sein wird, wäre es bestimmt kein Problem das Programm dort immer lauffähig zu halten - unter Linux würde eben mono installiert werden, was auch kein größerer Aufwand bedeutet. Mich interessieren aber die Vor-/Nachteile von beiden Varianten und was womit möglich ist.

Michael

miketech
30.10.2005, 21:18
Hi Michael,

welche Plattform ist denn Dein Favourit? Geht es primär um Windows - Anwendungen, die auch mal eben unter Linux laufen sollen? Oder sind beide Plattformen "gleichwichtig"?

Also was hierbei noch vergessen wurde: Java

Mit Java und SWT hast Du z.B. unter Linux Gtk Look und unter Windows den Windows Style. Oder: Java mit Swing. Derzeit sieht Swing nur unter Windows auf Wunsch native aus, unter Linux noch nicht. Aber in der nächsten Java Version wird Swing auch unter Linux Gtk verwenden können.

Ansonsten: Ja, für Gtk GUIs nutzt Du Glade zum erstellen.

Das Problem, dass Gtk installiert sein muss bei C++ Anwendungen hast Du bei Mono und .NET natürlich auch. D.h. ein Anwender muss auch Gtk# installieren. Bei WXNet besteht dabei dasselbe Problem.

Alternativ hierzu: Windows Forms. Dann hast Du definitiv nativen Look unter Windows und alternativ wird Windows Forms bereits teilweise unter Linux unterstützt, was auch in den nächsten Versionen immer besser sein wird. Natürlich wird es aber nicht so problemlos sein, wie z.B. Gtk, da Windows Forms das GUI Framework von Microsoft ist.

Ach und: MySQL sollte kein Problem sein. Garantieren kann ichs nicht, weil ich es noch nie versucht habe.

Gruß

Mike

michaeljk
30.10.2005, 22:06
Hi Mike,

vielen Dank für deine schnelle Antwort. Was die Frage des "Favoriten" anbelangt, so kann ich diese nicht eineutig beantworten - ich persönlich entwickle und arbeite derzeit hauptsächlich unter Linux, sämtliche Clients bei uns werden in Kürze auch darauf umgestellt sein. Aus diesem Grund ist es unabdingbar, das die Anwendung natürlich auch dort lauffähig sein muss. Da es aber auch Anwender geben wird die noch oder weiterhin Windows nutzen, möchte ich "zweigleisig" fahren wobei wenn möglich der geringsmöglichste Aufwand dabei entstehen soll um beide Plattformen zu unterstützen.

Bei der Frage zwischen Java und .NET würde ich derzeit letzteres vorziehen - wie bereits erwähnt ist .NET in Zukunft sicherlich auf jedem Windows-System vorinstalliert. Die Anwendungen behalten die gewohnte Geschwindigkeit und sind ohne recompile lauffähig - das ganze klingt für einen Entwickler natürlich traumhaft, obwohl es mir nicht unbedingt etwas ausmacht das Programm für eine andere Plattform neu compilieren zu müssen (solange dies einwandfrei und ohne viel Änderungen funktioniert). Die Java-Runtime ist nicht immer vorinstalliert und kann je nach Version auch mal "Zicken" machen so das es zu Problemen kommt - und der letzte Grund ist einfach der, das ich derzeit kein Java kann ;-)

An wxWidgets stört mich derzeit der Zusatzaufwand - ich muss die entsprechenden Libs zusätzlich installieren zu .NET, wobei wir schon bei 2 Paketen sind. Muss gtk dabei eigentlich auch nochmal installiert sein? Andererseits unterstützt wx.net die native Oberfläche bei Windows, bei Linux wird gtk2 benutzt - erspart somit eine Menge an Arbeit, wenn man so weit wie möglich das Aussehen der Endanwendung auf dem OS erhalten lassen möchte.

WindowsForms ist meines Wissens derzeit noch lange nicht ausgereift - Mono "hinkt" also hinterher, wie es derzeit mit der zweiten Version von .NET an Unterstützung steht weiss ich leider auch nicht, vermute aber das damit der Abstand noch größer wird, wo doch nur .NET 1.x unterstützt wird.

Die einzigen Punkte die mir eben etwas "Unbehagen" bereiten, ist die Unterstützung von Datenbankzugriffen und Reportedruck unter beiden Systemen per C# - sofern hier die Unterstützung gewährleistet ist, bestünde zumindest theoretisch kein Grund das ganze nicht mit Mono zu versuchen.

Michael

miketech
30.10.2005, 22:33
Hi,

ok dann ist Linux doch eher die zukünftigere Plattform für Deine Anwendung, aber Windows muss ebenfalls unterstützt werden.

Also zunächst wird .NET vermutlich auch bei Windows Vista nicht per Default mit installiert werden. D.h. der Endanwender muss .NET nachinstallieren und zusätzlich Gtk#, oder WX.NET. Er kann natürlich statt .NET auch Mono mit Gtk# für Windows installieren. D.h. der Aufwand ist mit Java identisch.

.NET Anwendungen laufen auch nicht unbedingt schneller, als Java-Anwendungen, weil die Technik dahinter dieselbe ist.

Also so gesehen hat .NET nun keinen Vorteil gegenüber Java. Das Argument, dass Du Java nicht kannst, während Du bereits C# Kenntnisse hast ist eher das schlagkräftige Argument. Da der minimale Aufwand im Vordergrund stehen sollte, fährst Du mit C# und Mono/.NET sicherlich ganz gut.

Persönlich finde ich Gtk angenehmer, als die WxWidgets. Wie es nun aber mit einem nativen Look für Gtk# unter Windows aussieht weiß ich nun nicht. Auf den Screenshots, die ich von Gtk# kenne sehen die Anwendungen unter Windows immer etwas fremdartig aus, was aber im Grunde nicht sooo schlimm ist. Es seidenn Du findest an WxWidgets mehr gefallen. Vielleicht findest auch ein natives Theme für Gtk#.

Gruß

Mike

michaeljk
30.10.2005, 23:39
Hi,

hättest du evtl. einige Links zu Screenshots von gtk# Anwendungen, die unter Windows laufen? Notfalls würde ich auch eine Anwendung einmal testweise installieren, dann kann man direkt auf beiden Systemen einmal das ganze vergleichen - oder direkt eine kleine Gtk#-Testanwendung erstellen, compilieren und es eben anschauen :-)

wxWidgets kenne ich nur von der Webseite her und von vlc (kann man mit einer solchen Oberfläche compilieren). Allerdings habe ich zu wx.net noch kein Paket zu meiner Distribution gefunden (Gentoo), müsste also notfalls selbst ein ebuild schreiben was wieder etwas aufwendig wäre.

Was mich aber zuletzt noch sehr interessiert:
Für die Anwendung ist es sehr wichtig, Dokumente drucken zu können - diese kämen dann direkt aus der MySQL-DB. Report-Generatoren sind bei sowas natürlich eine schöne Sache, bei einigen Crossplattform-Sprachen weiss ich aber, das diese meist nur für ein OS verfügbar sind. Gibt es unter Mono/.NET eine Möglichkeit, soetwas auf leichtem Wege einzubauen? Wie wird sowas bei Java gelöst?

Michael

miketech
31.10.2005, 06:10
Hi,

also hier ist z.B. der PornViewer unter Windows:

http://docs.codehaus.org/download/attachments/18179/pornBrowserScreen.png

Hier wird grad eine Gtk# Anwendung unter Windows geschrieben:

http://www.mfconsulting.com/tutorial/newgladeapp/pic/vsnewgladeappStep07.png

Bei Google finden sich dafür sicherlich noch mehr und es sieht mittlerweile auch gar nicht mehr so schlimm aus, wie früher. Die Buttons scheinen zumindest schonmal native zu sein, ebenso die Scrollbars. Vielleicht ja noch mehr.

Zu Deinen Reports: Inwiefern Mono so etwas bereits unterstützt weiß ich nicht. Der Vorteil von Java ist, dass es bereits sehr bekannt ist, weshalb Du im Internet sicherlich bereits eine Menge von Tools zu diesem Thema finden wirst.

Da aber auch die Mono Community nicht schläft wirst Du, wenn so etwas nicht bereits native unterstützt wird auch hierzu etwas finden. Ansonsten bleibt vielleicht nur selbst schreiben, was aber denke ich nicht zu aufwendig sein sollte, wenn Du es auf Deine Aufgaben beschränkst.

Gruß

Mike

michaeljk
31.10.2005, 08:57
Hi Mike,

danke für die Screenshots - ich habe mir heute Nacht auch einmal die Mühe gemacht und eine GTK# Anwendung unter Linux/Windows laufen lassen. Komischerweise sehen die Controls dort aber noch nach "altem Gtk-Stil" aus (habe gtk# 2.3.92 benutzt) - das ist eigentlich genau das, was ich nicht haben wollte :-)

Den Installer für die Windows-Runtimes habe ich von dieser Seite:
http://forge.novell.com/modules/xfmod/project/?gtks-inst4win

Das ganze hat auch einwandfrei geklappt mit der Installation, nachdem ich noch ein paar DLLs vom System gesäubert habe. Mit dabei war auch ein "Theme-Selector", der aber nicht so die gewünschten Ergebnisse zutage bringt. Die Readme-Datei sagt hierzu folgendes:

"This release uses GTK+ 2.8. Notice that the Gtk# version in use here
are 1.0.10 and 2.3.92"

Letzteres irritiert mich etwas - könnte es sein, das die Runtime evtl. gtk1 benutzt hatte zur Darstellung? Ich habe das Programm unter Linux mit diesen Bibliotheken erstellt:



using Gtk;
using GtkSharp;
using System;


Ist natürlich dann die Frage, welche Libs er bei Windows benutzt - unter Linux sieht es zumindest einwandfrei aus. Nutze derzeit übrigens die normale Microsoft .NET Runtime, also noch nicht Mono installiert auf dem Windows-Rechner.

Michael

miketech
31.10.2005, 13:16
Hi,

also ich kann mir eigentlich nicht vorstellen, dass man mit Gtk# sogar Gtk1 Programme unter Windows laufen lassen kann.

Wofür hast Du denn using gtksharp in Deinem Programm? Using gtk sollte reichen, oder?

Mehr weiß ich leider auch nicht.

Gruß

Mike