X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=doc%2Ffaq;h=d404ba4d62a42fb4e6759d0f8e3f00701e89a829;hb=de6d7a5ccedda43516abba47206a2a834ad6a475;hp=2d56a5057e314fa3062338ac7afbfdce7501b5b6;hpb=8ea6302fef5d7b71a431ea043cbf752ddc9932d8;p=mono.git diff --git a/doc/faq b/doc/faq index 2d56a5057e3..d404ba4d62a 100644 --- a/doc/faq +++ b/doc/faq @@ -271,6 +271,30 @@ A: Gtk# is a set of bindings for the Gtk+ toolkit for C# (and other CIL-enabled languages). System.Windows.Forms is an API defined by Microsoft to build GUI applications. +Q: Why not implement System.Windows.Forms on top of Gtk# or Qt#? + +A: There are several reasons for this. + + First of all, Gtk+ and Qt are standard toolkits on Linux, and their + proponents want to use their favorite toolkits when writing + applications. + + Related to this is the idea that System.Windows.Forms is + brain-dead in certain areas, such as internationalization. + System.Windows.Forms uses explicit sizes for all controls, as opposed + to Gtk+ and Qt which use a box/packing model, which can better deal with + the different string lengths different languages will have. + + Next is compatibility. It is not possible to implement + System.Windows.Forms on top of Gtk+/Qt and have 100% compatibility, + because System.Windows.Forms exposes lots of Win32-isms, such as the + Win32 message loop. In order to maintain compatibility, Wine must be used, + and this is being done; see the + System.Windows.Forms effort page. + + Additionally, Wine apps don't currently fit in -- visually -- with + Gtk+ or Qt apps. + Q: Will I be able to run my smart clients on systems powered by Mono? A: As long as your applications are 100% .NET and do not make use @@ -561,10 +585,11 @@ A: Yes. The CLI contains enough information about a class that exposing it to other RPC systems (like CORBA) is really simple, and does not even require support from an object. - We will be implementing CORBA inter-operation as an extension to the - Mono classes so that we can integrate with Bonobo, just like - Microsoft provides COM inter-operation classes and support - mechanisms. + Remoting.CORBA is + a CORBA implementation that is gaining momentum. + + Building an implementation of the Bonobo interfaces once this is ready + should be relatively simple. Q: Can I serialize my objects to other things other than XML? @@ -573,21 +598,49 @@ A: Yes, although the serializing tools have not yet been planned, and Q: Will Mono use ORBit? -A: No. Mono will be using a new implementation of CORBA that isn't still started. +A: There are a few advantages in using ORBit, like reusing existing code + and leveraging all the work done on it. Michael Meeks has posted + a few reasons, + as well as some ideas + that could be used to reuse ORBit. + + Most users are likely to choose a native .NET solution, like Remoting.CORBA + ** MonoDoc Q: What is MonoDoc? -A: MonoDoc is a graphical documentation editor and viewer. Currently, MonoDoc - consists of a Gtk# application and is in heavy development. There is also a - Qt# version of it. - +A: MonoDoc is a graphical documentation browser for the Mono class + libraries. Currently, monodoc consists of a Gtk# application and is + in heavy development. ** Development Tools and Issues +Q: I am having trouble compiling a new version of Mono from CVS, it + complains about my runtime being out of sync. + +A: Jonathan Pryor has provided the following answer: + + To upgrade your class libraries and compiler, see the See + README.building in the MCS directory. + + The single biggest source of confusion seems to be the "Your + runtime is out of sync" messages. Realize that this is *normal* + while BUILDING. Think about it: you're building a new class + library with the old runtime. If the new class library references + a function that the old runtime knows nothing about, the runtime + system issues this warning. + + Basically what needs to happen is for a new mono runtime to be + compiled, then the corlib class library be compiled, and once this + is done, install the new runtime, followed by corlib. + + Once this is done, you can continue building your entire + environment. + Q: Will it be possible to use the CLI features without using byte codes or the JIT? @@ -811,12 +864,12 @@ A: You can get very good tools for doing Java development on free Q: Could Java target the CLI? -A: Yes, Java could target the CLI. We have details on a project that someone could take on to - make this happen. +A: Yes, Java could target the CLI, Microsoft's J# compiler does that. - Microsoft has an implementation of the Java language called J# that - can target the CIL execution engine. + The IKVM project builds a + Java runtime that works on top of .NET and on top of Mono. IKVM is + essentially a JIT compiler that translates from JVM bytecodes into + CIL instructions, and then lets the native JIT engine take over. Q: Is it possible to write a JVM byte code to CIL converter? @@ -838,6 +891,8 @@ A: Yes, it is possible. Here are a few starting point: be translated into the equivalent "meaning" in CLR-land. + See also the IKVM project + Q: Could mono become a hybrid CIL/java platform? A: No. It is quite far from the philosophy of the project. The idea of Mono @@ -852,9 +907,8 @@ A: No. It is quite far from the philosophy of the project. The idea of Mono Q: Do you plan to implement a Javascript compiler? -A: Yes. Eto Demerzal has started a Rhino port to C#. - After this is completed, we will begin developing - the JavaScript compiler. +A: Yes. The beginnings of the JScript compiler can be found on CVS. + Cesar coordinates this effort. Q: Can Mono or .NET share system classes (loaded from mscore.dll and other libs) or will it behave like Sun's Java VM? @@ -896,10 +950,13 @@ A: Embracing a good technology is good. Extending technologies in encourage you to make those classes operate correctly well in both Mono and .NET. + Today Mono ships with a number of extra libraries that were + developed either by members of the Mono community, or other + groups. + Q: Is there any way I can develop the class libraries using Linux yet? -A: Yes. Some class libraries can be developed on Linux. Search for - Paolo's post (he lists which classes can be compiled fine now). +A: Yes. Mono has been selfhosting since March 2002. Q: Is there any way I can install a known working copy of mono in /usr, and an experimental copy somewhere else, and have both copies use @@ -1131,27 +1188,61 @@ Q: Could patents be used to completely disable Mono (either submarine patents filed now, or changes made by Microsoft specifically to create patent problems)? -A: No. First, its basic functional capabilities have pre-existed too - long to be held up by patents. The basic components of Mono are - technologically equivalent to Sun's Java technology, which has been - around for years. - - Mono will also implement multi-language and - multi-architecture support, but there are previous technologies - such as UCSD p-code and ANDF that also support multiple languages - using a common intermediate language. The libraries are similar - to other language's libraries, so again, they're too similar to - be patentable in large measure. - - However, if Microsoft does patent some technology, then our plan is - to either (1) work around it, (2) chop out patented pieces, (3) - find prior art that would render the patent useless. +A: First some background information. + + The .NET Framework is divided in two parts: the ECMA/ISO covered + technologies and the other technologies developed on top of it like + ADO.NET, ASP.NET and Windows.Forms. + + Mono implements the ECMA/ISO covered parts, as well as being a + project that aims to implement the higher level blocks like + ASP.NET, ADO.NET and Windows.Forms. + + The Mono project has gone beyond both of those components and has + developed and integrated third party class libraries, the most + important being: Debugging APIs, integration with the Gnome + platform (Accessibility, Pango rendering, Gdk/Gtk, Glade, GnomeUI), + Mozilla, OpenGL, extensive database support (Microsoft only + supports a couple of providers out of the box, while Mono has + support for 11 different providers), our POSIX integration + libraries and finally the embedded API (used to add scripting to + applications and host the CLI, or for example as an embedded + runtime in Apache). + + The core of the .NET Framework, and what has been patented by + Microsoft falls under the ECMA/ISO submission. Jim Miller at + Microsoft has made a statement on the patents covering ISO/ECMA, + (he is one of the inventors listed in the patent): here. + + Basically a grant is given to anyone who want to implement those + components for free and for any purpose. + + The controversial elements are the ASP.NET, ADO.NET and + Windows.Forms subsets. Those are convenient for people who need + full compatibility with the Windows platform, but are not required + for the open source Mono platform, nor integration with today's + Mono's rich support of Linux. + + The Mono strategy for dealing with these tehcnologies is as + follows: (1) work around the patent by using a different + implementation techinque that retains the API, but changes the + mechanism; if that is not possible, we would (2) remove the pieces + of code that were covered by those patents, and also (3) find prior + art that would render the patent useless. Not providing a patented capability would weaken the interoperability, but it would still provide the free software / open source software community with good development tools, which is the primary reason for developing Mono. + The patents do not apply in countries where software patents are + not allowed. + + For Linux server and desktop development, we only need the ECMA + components, and things that we have developed (like Gtk#) or Apache + integration. + ** Miscellaneous Questions @@ -1238,7 +1329,8 @@ A: There are several but one that is free software and uses MCS is the one Q: Is it possible to use Visual C++ with Mono?. -A: Well, It's possible to run VC++ generated apps under Mono though. +A: It's possible to run VC++ generated apps under Mono, but we do not + provide a Manager C++ compiler ourselves. ** Mono Common Problems