14
edits
(basically add a new proposal for a "mono" section) |
|||
| Line 1: | Line 1: | ||
== On Introduction == | |||
Typos: tookits -> toolkits, wory -> worry | |||
== On Perl5 cons == | == On Perl5 cons == | ||
| Line 158: | Line 163: | ||
* JBoss Seam - works closely with business objects and services to provide web interfaces, including some AJAX | * JBoss Seam - works closely with business objects and services to provide web interfaces, including some AJAX | ||
There are good options within each layer: application server, web server, persistence/ORM | There are good options within each layer: application server, web server, persistence/ORM implementation (hence database), GUI, operating system, security services, etc., and that's just the server side. The whole thing is mind-bogglingly complex - too much to consider all at once, but if you build one tower of tools, have a clear domain model and services, pre-defined roles, and an eye for security, then it should build quickly. | ||
To address each point with this set of Java technologies: | To address each point with this set of Java technologies: | ||
| Line 168: | Line 173: | ||
# '''Security''': Server-side security is well established, uses most common authentication and authorization services, and is built into the language. EJB 3.0 in particular uses role-based security for both declarative and programmatic access control. | # '''Security''': Server-side security is well established, uses most common authentication and authorization services, and is built into the language. EJB 3.0 in particular uses role-based security for both declarative and programmatic access control. | ||
# '''Enforcement of Good Code''': The tools (Eclipse at least) do a good job. | # '''Enforcement of Good Code''': The tools (Eclipse at least) do a good job. | ||
== Proposed Mono Section == | |||
[http://www.mono-project.com/ The Mono Project] | |||
=== Pros === | |||
* Based on the CLR interoperability: every language that compiles to CIL (CLR Intermediate Language) can be interoperable with other languages. This will prevent the problem we have now with Bugzilla about switching the language (if we use a CLR-based language now, we could do a painless and gradual switch to other language in the future). This could also allow to Bugzilla be written in different languages depending on the specific needs of each part. | |||
* Can be compiled to native code using AOT | |||
* MIT/LGPL/GPL implementations | |||
* Easy to learn | |||
* Outstanding quantity and quality of documentation, thanks to the fact that all .NET related stuff is reusable. | |||
* Under active development | |||
* Enthusiastic and huge user communities (.NET and Mono) | |||
* The majority of the interesting Java frameworks are already ported to .NET (NHibernate, NUnit, NLog, etc.) | |||
* There is a huge number of libraries and components to be used with this platform. | |||
=== Cons === | |||
* Much criticised in the OpenSource community. | |||
=== Available CLR-based languages === | |||
==== Boo ==== | |||
This is a scripting language based on Python language syntax and designed to be used with Mono. | |||
===== Pros ===== | |||
* Statically typed language, while keeping the scripting syntax. | |||
===== Cons ===== | |||
* The syntactic cons of Python, I suppose. | |||
==== Nemerle ==== | |||
An ultra-high level language. | |||
===== Pros ===== | |||
* ?? [ To be filled. ] | |||
===== Cons ===== | |||
* Not much widely used and known. | |||
==== C# ==== | |||
A language that could be named as a mix between Java and C++. | |||
===== Pros ===== | |||
* It has all the nice features that Java had when was borned, along with others that Sun has acquired later for it (like Generics and Attributes). | |||
* Provide other features that Java lacks (preprocessor conditionals, unsafe mode for performance goals, operator overloading, etc.). | |||
===== Cons ===== | |||
* ?? [ To be filled. ] | |||
==== J# ==== | |||
The java language, but CLR-based and used along the Mono API. | |||
===== Pros ===== | |||
* It uses the commonly-known syntax of pure Java, while focusing it with Mono so as to be able to combine it with the interoperability that the CLR provides. | |||
* Statically typed language. | |||
===== Cons ===== | |||
* Not much widely used. | |||
==== VB.NET ==== | |||
The old VB language, redesigned for .NET. | |||
===== Pros ===== | |||
* Very popular. Would attract many developers to write plugins/addins. | |||
===== Cons ===== | |||
* Although it has type semantics, the compiler often assumes type conversions or doesn't warn about mismatches (then, it's an hybrid, neither static nor dynamic). | |||
* Awful syntax. | |||
==== IronPython ==== | |||
The Python language, redesigned to be CLR-based. | |||
===== Pros ===== | |||
* Based on a very popular language in open source development. | |||
===== Cons ===== | |||
* All the cons of Python I suppose. | |||
* Immature. | |||
==== Ruby.NET ==== | |||
The Ruby language, redesigned to be CLR-based. | |||
===== Pros ===== | |||
* Based on a very popular language in open source development. | |||
===== Cons ===== | |||
* All the cons of Ruby I suppose. | |||
* Immature. | |||
==== PHP.NET ==== | |||
The PHP language, redesigned to be CLR-based. | |||
===== Pros ===== | |||
* Based on a very popular language in open source development. | |||
===== Cons ===== | |||
* All the cons of PHP I suppose. | |||
* Immature. | |||
edits