Cosa vuol dire orientato ai servizi?

Credo si tratti di due framework che non abbiano molte differenze, se analizzati in profondità.

Sono entrambi orientati agli oggetti e progettati per essere multipiattaforma, cioè forniscono una macchina virtuale (virtual machine) per ogni ambiente operativo in cui i rispettivi produttori intendono far eseguire le applicazioni.

Forse .NET è ancora limitato in termini di macchine virtuali disponibili (su Linux ci sono diversi progetti avviati, ma ancora non c'è molta chiarezza), mentre Java è proprio dappertutto.

Entrambi sono prodotti commerciali, .NET sviluppato da Microsoft, mentre Java è un prodotto della Sun.

.NET ha il vantaggio di supportare un linguaggio intermedio (IL), simile al bytecode di Java, che può essere prodotto dalla compilazione di diversi moduli scritti con linguaggi differenti: C#, VB .NET, J# ed eventualmente anche linguaggi prodotti da compilatori di concorrenti (presto disponibile, anche Delphi per .NET da parte di Borland, al quale sono molto interessato).
Questa opportunità può essere utile in particolare per chi sviluppa in team e desidera integrare nella realizzazione di un progetto persone con skill e attitudini diverse.

Per chi era abituato a lavorare con i "vecchi" strumenti di sviluppo Microsoft, Visual Basic 6, VC++, ecc. si tratta di un bel salto per passare a .NET: la programmazione orientata agli oggetti potrebbe spiazzare un po' chi era abituato allo strano modo di programmare ibrido del VB classico.

.NET rappresenta un bel salto di qualità, anche se Microsoft non ha fatto altro che inventare l'acqua calda: framework e strumenti simili erano disponibili già da tempo, basti pensare allo stesso Java della Sun. Come al solido, Microsoft attende l'evolversi degli eventi, poi prende le caratteristiche dei prodotti concorrenti e realizza qualcosa di simile tentando di lasciarne fuori i difetti.

Da quanto dice Microsoft, .NET entrerà a far parte dei futuri sistemi operativi Windows, quindi è auspicabile che lo sviluppo di applicazioni .NET a livello desktop aumenti nei prossimi anni, mentre dal lato "multipiattaforma" (escludendo quindi i sistemi Windows), c'è ancora molta incertezza, quindi da quel punto di vista Java è ancora il meglio in circolazione.

Siccome sono prodotti in continua evoluzione, è probabile che entrambi subiranno modifiche e miglioramenti che li porteranno testa a testa nel futuro della programmazione; a parte le solite diatribe che si possono creare, bisogna notare anche il vantaggio di poter scegliere (almeno per il momento) .