wx.NET is a .NET wrapper for the multi-platform toolkit wxWindows. Additionally, Mono Weekly News is out and Includes a new interview, software announcements and the PHP/Mono integration. Also, there is work being done to try and port Mono to MacOSX. More info on the ongoing effort, in the list.
It’s impressive to see the amount of effort that is going into MONO and all the projects that are connecting to it or supporting it.
Though I am not a big fan of the .NET bloatware software programming model, I hope the Microsoft .NET patents do not throw a big wrench into the MONO project. It would be a shame to see all that work go to waste. There is still a chance some good application will come out of MONO/.NET.
–ms
What is the advantage of using C# over Python or Ruby for wxWindows development?
In general, one might go with C# if you have a Windows .NET application that is written using C#, so you can use the same programming language. Also, C# is compiled code vs. Ruby and Python.
And C# really is the real .NET language, the base that all other languages have had to conform to. Meaning C# was the basis of the CLR. So going native C# is a good impedance match to .NET.
As for wxWindows, I would guess the map from the single inheritance MFC-like C++ world of wxWindows to C# is relatively simple compared to Ruby and Python, neither of which is very much like C/C++/C#. Also Ruby and Python are not nearly as polished on Windows as they are on Linux.
There’s probably more reasons, but I’m not a big fan of .NET in the first place, so I don’t know all the details.
–ms
Finally, we will have bloat to rival the bloated bloatware bloat that Windows users will soon enjoy – and at the same time, too! No longer will OSX users wait in line for the latest bloat. Second class citizens? No! Hooray for this noble effort.
I’ve always been a little upset that the Java downloads are so small.. sure Java might run like a program four hundred times bigger, but still the knowledge lurks – Java is too small!
It’s no small sigh of relief here, upon reading that I will now have the Mono bloat PLUS Java PLUS maybe even .NET itself if I choose to run it on top of WINE. Who knows – maybe I’ll even try running .NET on top of Windows XP on top of Mac OSX, while concurrently running Java apps (Swing!! Yay bloatware!) and a few MONO apps in an Xfree (Yay! The BLOATEDEST!) window.
Come join me, Mac users, and we will be the Kings of Bloat.
Imagine a Python#, a Ruby#, .. To just have those languages, or all languages run on .NET runtime would make them run on just about every platform.
I think there is some potential here.
Imagine, with just Java, Sun has found it takes 24GB of DEDICATED RAM to support 150 Java terminals (please, call them jerminals for that’s what they are).
As the high density RAM on these big machines is very expensive, the cost of this RAM makes any price delta vs. getting PC’s evaporate. After it evaporates, of course it condenses into Sun’s bank account.
On Solaris 9, with just Java, “hello world” can have a 35MB to 40MB footprint. And strangely enough, that’s not too different than what .NET takes on Windows. Microsoft has an anti-benchmarking clause in their .NET license for good reason. The thing is a resource pig.
However, you can be GRATEFUL that it will take so little code to write new benchmarks to test your virtual memory manager!
Imagine how many bugs are in the giant .NET/MONO runtimes. And imagine how difficult and time-consuming it will be to track these down. And how much money that will make Miguel, Scott, and Bill. These guys ain’t stupid. They want your money and are building giant money extraction engines.
Hey, I think it’s a special kind of NUTCASE that likes .NET and MONO. Someone who deep down inside hates other people and wants to hurt them. Who else would inflict such crappy code onto other people? It’s like throwing blocks of cement onto someone’s head.
One day people will realize that .NET and MONO do not solve any problem. Instead of building ships that float, .NET and MONO are like building giant underwater mountains on tractor treads that traverse the sea floor. They are brain dead.
But I do hope some sort of useful application comes out of the bloatware, even if it only a virtual memory tester or CPU load generator.
–ms
there is a python for .net, you can get the MS VS.NET plugin for Python at active state.
For me MONO and .NET are only a technological hype that will calm down within the upcomming 1-2 years. Specially now with the unknown situation about licensing and patending issues from MS. No one really knows what happens with that and how the future looks but from the past we know that languages are being invented and died after some years specially these new tech languages that claim to do things better and faster than the old ones. And how does it look today ?
C, C++, JAVA, PERL etc. still in usage and people still develop fast with it since they know the language already and don’t require to learn yet another one. Not to mention that universities would profit to teach one language that makes really sense in the business and no technological language that may die in some years again.
Even if there are some benefits from the new languages, but look closer to it, the maintainance, the time learning it and the requirements on your system will increase. Once you needed C to compile GNOME only and today you need stuff like C, PYTHON and soon C# (MONO .NET)
[quote]On Solaris 9, with just Java, “hello world” can have a 35MB to 40MB footprint. And strangely enough, that’s not too different than what .NET takes on Windows.[/quote]
Actually a quick test shows that Hello World (gui) uses 12772Kb. A part of this is RSS though (as is the case for java as well).
I even was able to get most of it compile on GNU/Hurd, fwiw. OSX shouldn’t be that difficult to get the runtime stuff working. Where the difficulty will be is doing graphical stuff, i.e. interfacing with Cocoa/Aqua. If you’re using X-based stuff, it should be pretty much the same as FreeBSD.
Even if there are some benefits from the new languages, but look closer to it, the maintainance, the time learning it and the requirements on your system will increase. Once you needed C to compile GNOME only and today you need stuff like C, PYTHON and soon C# (MONO .NET)
Excuuuuse me, but you are bagging on Python, while praising Java as one of the languages that’ll survive?
C, C++, JAVA, PERL etc. still in usage and people still develop fast with it since they know the language already and don’t require to learn yet another one.
You don’t know what you are talking about. I predict that Perl will disappear before Python does, and to criticize Python while praising that pig Java is just ludicrous. I have nothing against the fine work that went into Java, but I’m sorry, Python is NOT harder to learn (the opposite), and for most tasks, superior to either Perl or Java (though each language is optimal in different situations).
Python is the most dynamically developing language today (Ruby is really not necessary, IMHO – duplicates Python and not nearly as mature). Python is also incredibly efficient and flexible.
I think Python is here to stay – and that is a GOOD THING *TM.
Look, it’s not about Perl vs. Python now. It’s a general thing.
Java, Python, Ruby, C# is/will probably be used by 20-30% of the programmers while C, C++ is used by 70% of the people. These modern languages will die faster than the old ones because they are still famous and work. I don’t see any points for creating new languages while the older ones are still powerful and works perfectly. Now don’t freeze me with the above mentioned languages since I put them there of personal taste. I’m sure there are a lot of people outside (more people than you and I may imagine) who still prefer the old languages that work for nearly 30 years. No need for them to create and use new modern languages. Many new languages will die because of lack of acceptance.
No need for them to create and use new modern languages. Many new languages will die because of lack of acceptance.
Errr… no. You do need new languages when old ones don’t do what you need them to do. C is not an OO language. We need interpretive languages. For many tasks it is simply impractical and too slow to use C or even C++ – just cannot be done for the kinds of tasks and deadlines that can come up. So you need SOMETHING for that – and so you had C++ and Java step in. But Python is a new language that has very powerful advantages over Java in many situations, and there really is nothing like it (again, Ruby is an inferior and superflous copy of Python). Therefore your thesis that other languages can do it all is simply wrong. For many tasks Python is by far and away the best tool around. So you are telling me that there is no constituency and critical mass to carry Python into the future similar to C. I disagree. More and more young folks are coding in Python, and the language is gaining tremendous momentum. Very soon, it will have the critical mass to become an accepted fixture. Again, I predict it will outlast Perl and even Java (in the sense that it’ll be used in more and more tasks where Java would have been used). Python will be left standing, and the new generations of coders will carry it forward.
…it was a joy to read them all. =P
Anyway C# has its advantages, those who don’t care shouldn’t care anyway.
i’m just wondering how python is doing in popularity out there? is it just a hacker language? a hobbyist language? or is it being used in the corporate world? I’m thinking of learning perl or python right now, and am stuck between the two. most of the resources i see for perl is for cgi programming, and cgi is already losing out to scripting languages like php and asp(.net). what exactly can python do besides being a language that’s easy to learn? and what about perl? any uses more useful than cgi?
C# never had much of much (if any) of an advantage over java to begin with but now with the introduction of templates in jdk1.5, java will be a real mother of a language.
The mono guys are doing great work I don’t debate that. It just seems that all of this energy would be much better spent refining something with abilities well proven (java).
…it’s more or less a copy of several other languages. The advantages are features of its framework which allow you to include (ie. program in) any other language and have benefit of a system managed instead program managed memory handling (solving the biggest problem of today’s C/C++ programs). Java and other modern languages offer the latter as well, but only for itself in its standard incarnation.
.NET must be really bloat if my audio player (on which I waste time to learn Managed DX) needs only 1.5-2megs of RAM to run according to the task manager.
Python is used just about everywhere. It isn’t just a “hacker” or “hobbyist” language. Try the following web page for who uses Python (btw, this is very much a subset)
http://www.python.org/psa/Users.html
This list includes organisations like: NASA, Zope, InfoSeek, Yahoo! Groups (prototyped with Python), Lawrence Livermore labs, Red Hat and many others.
The best thing about it is that it can be used for almost any task outside of systems programming. Despite misinformed opinions, Python is not actually slow. Using extensions like Psyco can increase a programs speed enormously, and Numeric allows data processing at a rate not much slower than C without all the hassles and unreliability. Superb language.
Or this:
http://www.python-in-business.org/success
thanks for the info. i’ll look into it and hopefully make a decision between perl and python. i’d love to learn both. but just too lazy to bother at the moment. one is enough for me.
thanks again!
I used to be a Perl die-hard and scoffed at Python when it was recommended to me. I’ve since changed my ways. While I still like Perl, Python just seems to encompass a larger base — it’s not just for shell scripts and cgi, but can be used (with extensions) for creating GUIs, numerical programs, games, and more. With Python now matured to the state it’s in, there’s little reason to bother with Perl at all, for better or for worse.
Python, C, and C++ (as well as a tad of bash scripting, of course) are really all you need to know, programming-wise, these days to get everything done, and done well (barring embedded work).
funny this stuff came up, I’ve been evaluating Boa Constructor and PythonCard on XP/RH8 over the last week. They are both RAD GUI IDEs that use Python and wxPython.
I’m really impressed so far. I have VS.NET, which is an excellent IDE, but I wanted a cross-platform framework (no more Windows lock in). With Python and wxPython, I can run just about anywhere.
P.S. – from what I’ve been reading and hearing, Python is picking up A TON of momentum over other languages such as Java and Perl. I guess for me (a non-programmer) its simplicity and clean syntax drew me in. I really don’t think you can go wrong with Python.
Can someone who knows about this please clarify something for me? I always thought one of the key benefits of writing a .NET application is that it can run anywhere, and namely, that Windows .NET applications can run under other .NET VM’s.
So why arent we all using 1 API for application GUI’s? Namely, windows.forms as will be used by the countless Windows applications to come.
Creating a different API for each UI toolkit (wxWindows, GTK, windows.forms etc.) will not help our operating systems at all.
We need to agree to use the windows.forms model so that applications are truly interoperable – Windows applications on Linux; Linux applications on Windows.
Am I missing something here?!
Yes…
windows.forms is not part of the C# language. Also, MSFT suggests that you use direct API calls to the Windows32 API from c# to handle things not supported in the current .NET APIs.
The patents that MSFT is current requesting will covert the windows.forms API. Thus it would be illegal to recreate the windows.forms API in MONO.
Please remember that only about 30% of the .NET APIs are part of the C# and CLI runtime standards. So while it’s possable to write C# programs that will run in non-MSFT versions of the VM; you’ll lose most of the resources required to make a worthwhile program.
APIs not coverted in the C# standard:
1) windows.forms
2) SOAP
3) XML
4) Client/Server communications
5) Database Access
With MSFT getting patents on how these are done in .NET; the non-MSFT VMs can’t create compatable APIs.
>>C# never had much of much (if any) of an advantage over java to begin with but now with the introduction of templates in jdk1.5, java will be a real mother of a language. <<
C# is going to have templates too, ws announced about 4 or 5 months ago.
….with couple of not important improvements. Both languages in the end are similar to each other. FOr instance, Java 1.5’s typesafe enums will be much more powerful than C#s. So what?
Languages are not really important. VMs, or the frameworks behind are important.
.NET, for instance does not offer cross platform compatibility.
Java does.
Period.
How can MS patent an API?
There are laws, at least here in Europe that enforce software interoperability and MS will not be able to stop a European software project implementing .NET API’s to support applications to run on different platforms.
Given MS never made such an approach with the straight Win32 API I cannot see how they can suddenly patent things now. And from what I have seen of the windows.forms API it doesn’t implement anything not done long before (by the likes of Java, or even Delphi’s class wrappers).
Seems to me, unless this is resolved now, and a single API used, we are doomed to recreate the horrible mess that is the Wine project in some years time. It would be sad to have to retrofit API’s later when we could embrace them now.
i once went to a .NET seminar (free ms sponsored for our company). they talked about .net being cross-platform. exact words (or close anyway) was: it’s cross-platform. it’ll work on windows, pocketpc, and mobile devices such as cellphones. so microsoft’s definition of crossplatform is simply they’re platforms on other devices.
Most languages are simple at the core, requiring minor effort to learn. The hard part is, producing code that is idiomatic to the language you’re programming in (Don’t code Java as if you were coding C or C++), and mastering the class libraries (Do not reimplement what is part of a core lib in the language, your version is going to be worse, and most likely wrong). It’s useless getting your panties in a knot over some particular language, languages come and go, who cares.
With Mono we take all these languages, C#, PHP, Perl, Python, Eiffel, you name it, throw them into an common run time environment and provide an common set of core libraries. Voila, you get access to all the libraries written in the different languages and you can interface code written in different languages. As new languages come out we extend the run time environment to support them. C# vs. Java, that is not interesting at all. It’s the CLR vs the Java VM, and trust me, the Java VM isn’t going to become a general purpose VM any time soon. The bottom line is that the CLR is a really good idea and Sun is probably kicking themselves over not coming up with the idea first. Java also doesn’t appear to be going anywhere on the client side while I predict that Mono will be a major part of the Linux desktop application future as part of GNOME. Personally I don’t care about cross platform desktop application, we don’t have them now, maybe we’ll have them in the future, who knows.
…but running around yelling the word “bloat” everywhere just make you sound like a fool more than anything else.
I’ve used quite a number of both Java and Python based programs on my Linux box and I must conclude that Python blows Java out of the water performance wise. Even Eclipse which uses native GTK2 widgets is for slower then any of the Python based utilities from Red Hat or the ROX project. Even very small Java programs like the time tracker I use is sluggish and takes a long time to start.
i think that the problem with python is the same as with smalltalk: since it’s not strongly typed the interpreter cannot catch a certain class of errors until you run the program and execute that precise part of code that you’re developing. with strongly typed languages like java and c# the compiler can catch more errors, before you run the program. so python program are less “secure”, imho, although they are faster to code. you should decide if you prefer a safer language (strngly typed) or one that permits fast coding (python, smalltalk…)
i think that the problem with python is the same as with smalltalk: since it’s not strongly typed the interpreter cannot catch a certain class of errors until you run the program and execute that precise part of code that you’re developing. with strongly typed languages like java and c# the compiler can catch more errors, before you run the program. so python program are less “secure”, imho, although they are faster to code. you should decide if you prefer a safer language (strngly typed) or one that permits fast coding (python, smalltalk…)
1. SOESC AI – 092501.2 Java Dependencies for Deployment
In this document provided to SOESC, John Perry describes the concerns regarding the Solaris “JVM dependencies for deployment”. Following is an excerpt:
——-
– Large footprint of applications when run on Solaris. A simple application (“hello world” type) has a total footprint of 35-40 megs on Solaris 9 (build 48, using Java 1.4 build 82) on both Intel and Sparc machines. Sparc machines, by far, have a much higher resident footprint then Intel machines (~30 megs, compared to ~11 megs). The same program run on a Windows machine has a footprint of ~5 megs, resident footprint being ~3.5 megs
– Slow start up times prevents Java applications from being started while Solaris is booting up and during mini-root time. This requires applications which are written in Java to have some kind of mechanism to start-up after the OS has been fully started.
– Instability of Native code (JNI) which can cause the entire VM to crash.
It is clear that even Java, having had YEARS to develop, countless millions of hours of development, still sucks big time.
Can Microsoft do better with .NET? Probably. It’s clear from the above that Windows is a far more efficient environment than Solaris. How about MONO? Who is to say? Of course, the big question of “WHY?” remains to be answered. These giant oinkware systems represent millions of lines of code with all the attendant bugs and present a model of software development that is far more complex than real programming languages.
It wasn’t until Java that we needed giant system tools like Together/J and others to let us see the millions of lines of spaghetti code that a Java developer has to deal with. And this particular tool, again according to Sun, takes 300MB to 900MB to run! When you need 1GB RAM just to run a single development tool, you know something is hideously wrong.
I am amazed and impressed by all the people who think there is value in hypercomplex systems programming. I am shocked by the people that think 40MB for “Hello, world” is an accomplishment. It is a testament to WHY so many IT projects fail, no doubt. The tyranny of mediocrity. The rule of the lowest common denominator. So many dumb developers spewing out code with their UML tool and wondering why their app doesn’t work…
–ms
Yes, remember Java AWT and Swing? Both tried to provide that universal GUI layer and failed. Yes, there should be a way to write a universally mediocre GUI, but that doesn’t mean you shouldn’t have access to the platform dependent GUI API if that suits your needs.
Mac OS X is representative of this perspective. You can write your mediocre Swing app to run everywhere, or you can write it to the actual Cocoa API, or you can do both and have it use the Cocoa API only if it’s running on OS X. Have your cake and eat it too.
so python program are less “secure”, imho, although they are faster to code. you should decide if you prefer a safer language (strngly typed) or one that permits fast coding (python, smalltalk…)
As the language stabilizes a bit, it’ll become in effect more “secure” as good coding conventions for it become more accepted practice. Thus far it is still a bit of a wild west because it is evolving so quickly. Give it time – I truly don’t believe Python will be any less secure than say Java.
Python is actually strongly typed.
I think you might be confusing it with dynamic/static typing which means that object types do not have to be declared (a la Python), and this is true and can give arise to some errors that may not arise with statically typed languages. Ada compilers do a superb job of catching these things.
It is interesting to see how a programming language has influence on the user’s desktop. Let explain it with some examples.
Programming in java leads to a java/swing look applications. If you program in python, you probably use wxPython which relies on wxGTK. Your application will have a GNOME look. With Ruby, the FOX GUI seems dominent (as far as I know, a wxRuby is on the task list). Now C/C++. If you use the wxWindows library, you get an application à la GNOME. If you choose the QT library, you get an application à la KDE. C#? I don’t know. Now Ximian, GTK2, wxNET, and … are coming.
There is no correlation between a programming language and a GUI API library, but the fact is that for a given language, you usually have one better dedicated GUI library. It seems, the multiplication of the languages implies a multiplication of GUI API libraries and therefore a lot of different looks. That is not good.
I stick on windows. I am using vb, vc, python/wxPython, pythonwin. All the final applications have the same look. This makes me (and the end user happy).
PS The couple python/wxPython is my favorite tool.
“Programming in java leads to a java/swing look applications.”
This is not necessarily true. First of all there are three different GUI frameworks for Java: AWT, SWING, and SWT. I am passing AWT and SWT, and will talk about SWING.
After writing a program in Swing, you can make it look like:
1. One of standard look and feels supported in Swing. (These are: Metal, Windows, Windows 2000, or Motif. You can also set a flag in the program that the look and feel should be detected on the runtime, so that it will be automatically set to the platform on which the program is running (in case another look and feel is not desired while running the program.)
With the upcoming Java 1.4.2 release, Windows XP and GTK+ look and feels are being added to the ones mentioned above. On Mac platform, Apple is writing JVM for MacOSX, and the latest drop Java 1.4 Developer Edition version 10 (released last week, probably the final release will be within a month or two) handles aqua look and feel by linking Swing components directly to MacOSX ones.
2. You can make it run in any look and feel prepared by 3rd party firms, such as incoors, or open source ones. Here are screenshots of couple of ready to use Swing look and feels, some are commercial, some are open sourced….
– Alloy(This is excellent): http://www.incors.com/lookandfeel/screenshots.php3
– Kunststoff: http://www.incors.org/screenshots.php3
– Compiere: http://www.compiere.org/looks/demo.html
– Metouia: http://mlf.sourceforge.net/index.php?screenshots
– XP: http://javootoo.l2fprod.com/plaf/xp/screenshot_xp.jpg
– SLAF: http://www.memoire.com/guillaume-desnoix/slaf/exemple/
This SLAF is interesting. It has 20 themes such as Beos, GTK, Aqua, X11 etc. look and feels for Swing. For instance, it even has famous Lothar look and feel for Swing applications. This means, you can set your application to look like Lothar on Windows or MacOSX. Here is screenshot:
http://www.memoire.com/guillaume-desnoix/slaf/ecran-012.png
Actually, I find Look and Feel framework of Java excellent.
“Themeing” isnt good enough though.
There is a standard set of widgets now that all programs need, so 1 API to control those widgets should be simple. Each implementation can manage the drawing and handling of its widgets how it likes, but it shouldnt be hard bound into the application. This is why describing an interface via an XML language and keeping it seperate from the application code is a good idea IMHO.
Thanks CranonN for your pertinent answer and all these links. I’m practically never programming in java, so I did not thought about the windows, java and metal motifs.
A fact remains. On Linux, I do not like the different look and feels among the applications (widgets, fonts, dialog boxes, …).
Michael is absolutely right. Java can be a pig. Python is vastly superior in many situations, and in those situations it will displace Java. Take a look at this:
http://news.com.com/2100-1001-984529.html?tag=fd_top
“For one thing, the memo said, those in control of Java had decided against fixing some bugs and had made changes that prevented older Java programs from working with newer versions of Java.
For another, the Solaris version of Java requires huge amounts of memory–as much as 900MB when running TogetherSoft software, since acquired by Borland. Even a basic program to print the words “Hello, world” on a screen takes 9MB, the memo said.
In contrast, Python–a programming language and associated software that’s similar in many ways to Java–needs only about 1.6MB to run the simple hello-world program, the memo said.”