Preguntas frecuentes


  1. ¿Qué es Python?

  2. Estoy interesado en el desarrollo de aplicaciones con Java. He entrado en su Web y he visto que ha escrito varios libros sobre este tema. ¿Me puede aconsejar con cuál debo empezar?

  3. Estoy interesado en el desarrollo de aplicaciones con C#. He entrado en su Web y he visto que ha escrito varios libros sobre este tema. ¿Me puede aconsejar con cuál debo empezar?

  4. Estoy interesado en el desarrollo de aplicaciones con Visual Basic. He entrado en su Web y he visto que ha escrito varios libros sobre este tema. ¿Me puede aconsejar con cuál debo empezar?

  5. Estoy interesado en el desarrollo de aplicaciones con C/C++. He entrado en su Web y he visto que ha escrito varios libros sobre este tema. ¿Me puede aconsejar por dónde debo empezar?

  6. ¿Qué lenguaje de programación debo elegir para escribir una aplicación de escritorio? ¿Y para una aplicación Web?

  7. ¿Qué relación tienen con .NET los libros que ha publicado sobre Visual C++?

  8. C# versus Java

  9. ¿Tiene publicados tutoriales en la Web?

  10. Además de MS Visual C++, ¿qué otros entornos de desarrollo integrado para C/C++ puedo utilizar?

  11. ¿Piensa escribir sobre las nuevas versiones de VS, C#, VB y .NET?

  12. ¿Piensa editar un libro en el que se trate desde cero el desarrollo de aplicaciones de escritorio y para Internet sobre la plataforma Mono?

  13. ¿Puedo desarrollar aplicaciones .Net sobre una máquina Linux o Mac OS X?

  14. ¿Cómo se imprime un documento de una o más páginas desde Java?

  15. ¿Dónde puedo ver las diapositivas de la conferencia "Windows Forms vs WPF"?


¿Qué es Python?

Se trata de un lenguaje de programación multiparadigma, ya que soporta la programación orientación a objetos, la imperativa, la programación concurrente y, en menor medida, la programación funcional.

Python es un lenguaje de programación versátil y ampliamente utilizado en una variedad de campos debido a su simplicidad, legibilidad y extensa biblioteca de módulos y paquetes. Por eso, la gente usa Python para muchos propósitos: desarrollo de software, construir aplicaciones web, desarrollo de APIs, pruebas software, desarrollo de juegos, ciencia de datos y análisis de datos, computación científica, big data, inteligencia artificial y aprendizaje automático, internet de las cosas, ciberseguridad, educación, etc.

¿Estás interesado en este lenguaje? Mi libro, "Enciclopedia del lenguaje Python", no es solo un libro; es tu compañero de aprendizaje en el viaje para convertirte en un desarrollador Python completo. Con explicaciones claras, ejemplos prácticos y un enfoque progresivo, este libro está diseñado para que cualquier persona, desde principiantes hasta desarrolladores con experiencia, pueda mejorar sus habilidades y crear aplicaciones impresionantes con Python.

Estoy interesado en el desarrollo de aplicaciones con Java. He entrado en su Web y he visto que ha escrito varios libros sobre este tema. ¿Me puede aconsejar con cuál debo empezar?

Si ha echado una ojeada a mis publicaciones Java, habrá observado estos libros:

1.- Java 2. Lenguaje y aplicaciones. Este libro se centra en la programación básica: tipos, sentencias, matrices, métodos, ficheros, etc., y hace una pequeña introducción a las interfaces gráficas, a las bases de datos y a las aplicaciones Web.

2.- Java 2. Curso de programación. Este otro libro cubre la programación básica (expuesta en menor medida en el libro 1) y la programación orientada a objetos (POO) en detalle: clases, clases derivadas, interfaces, paquetes, excepciones, etc. Después, utilizando la POO, añade otros temas como estructuras dinámicas de datos, algoritmos de uso común, hilos (programación concurrente), etc. Este sí que es un libro de programación con Java en toda su extensión.

3.- Java 2. Interfaces gráficas y aplicaciones para Internet. Este libro cubre el desarrollo de aplicaciones con ventanas (interfaces gráficas), bases de datos y aplicaciones para Internet de n capas (páginas Web, servlets, servicios Web, JSF, AJAX). Este libro es el más interesante para un profesional que quiera dedicarse al desarrollo de aplicaciones de escritorio o Web utilizando Java. Para acceder sin dificultades a la materia tratada en este libro, debe haber adquirido los conocimientos explicados en el anterior, el 2. Esto es, el libro 3 es una continuación del 2.

Para empezar, yo elegiría primero el 2 y después el 3, puesto que los contenidos del 1 aparecen en estos. Ahora, si de momento sólo quiere algo superficial, entonces le basta con el 1.

Puede ver más detalles sobre estos libros en mi Web.

Estoy interesado en el desarrollo de aplicaciones con C#. He entrado en su Web y he visto que ha escrito varios libros sobre este tema. ¿Me puede aconsejar con cuál debo empezar?

Si ha echado una ojeada a mis publicaciones C# (pronunciado C sharp), habrá observado estos libros basados en la biblioteca Microsoft .NET:

1.- Microsoft C#. Lenguaje y aplicaciones. Este libro se centra en la programación básica: tipos, sentencias, matrices, métodos, ficheros, etc., y hace una introducción a las interfaces gráficas, a las bases de datos y a las aplicaciones para Internet.

2.- Microsoft C#. Curso de programación. Este otro libro cubre la programación básica (expuesta en menor medida en el libro 1) y la programación orientada a objetos (POO) en detalle: clases, clases derivadas, interfaces, espacios de nombres, excepciones, etc. Después, utilizando la POO, añade otros temas como estructuras dinámicas de datos, algoritmos de uso común, hilos (programación concurrente), etc. Este sí que es un libro de programación con C# en toda su extensión.

3.- Enciclopedia de Microsoft Visual C#. Interfaces gráficas y aplicaciones para Internet con Windows Forms y ASP.NET. Este libro cubre el desarrollo de aplicaciones con ventanas (interfaces gráficas), bases de datos, aplicaciones para Internet de n capas (formularios Web, servicios Web, AJAX) y termina con una introducción a la programación de móviles. Este libro es el más interesante para un profesional que quiera dedicarse al desarrollo de aplicaciones de escritorio o Web utilizando C#. Para acceder sin dificultades al contenido de este libro, es necesario haber adquirido los conocimientos explicados en el anterior, el 2. Esto es, el libro 3 es una continuación del 2.

Hay otros dos libros, 3.1.-Visual C#. Aplicaciones de escritorio con Windows Forms y 3.2.-Visual C#. Aplicaciones web con ASP.NET, que cubren la misma materia que el 3 (pero actualizada; el 3 ya no será actualizado). El primero, como su nombre indica, cubre el desarrollo de aplicaciones de escritorio con Windows Forms y el acceso a bases de datos utilizando diferentes técnicas; y el segundo, como su nombre indica, cubre el desarrollo de aplicaciones web a base de formularios y servicios web (incluyendo acceso a bases de datos).

Esta división en dos libros de la materia expuesta en el libro 3 permitirá al lector acceder por separado al aprendizaje de un tipo u otro de desarrollo de aplicaciones. No obstante, como los formularios web ASP.NET estudiados en Visual C#. Aplicaciones web con ASP.NET se apoyan en controles de servidor web que generan código HTML automáticamente y emulan el modelo de programación basado en eventos de los formularios Windows, el lector, para el estudio de la materia expuesta en este libro, debe conocer la materia expuesta en el libro Visual C#. Aplicaciones de escritorio con Windows Forms.

4.- Visual C#. Interfaces gráficas y aplicaciones para Internet con WPF, WCF y Silverlight. Este libro cubre el desarrollo de aplicaciones con ventanas (interfaces gráficas), bases de datos, aplicaciones para Internet de n capas (formularios Web, servicios WCF) utilizando básicamente las bibliotecas WPF, WCF y Silverlight, como alternativa a Windows Forms y a ASP.NET. Este libro es el más interesante para un profesional que quiera dedicarse al desarrollo de aplicaciones de escritorio o Web utilizando las tecnologías indicadas. Para acceder sin dificultades al contenido de este libro, se sugiere tener conocimientos sobre la temática tratada en el libro 3, aunque, con un poco más de esfuerzo, también podríamos acceder una vez adquiridos los conocimientos explicados en el libro 2.

Para empezar, yo elegiría primero el 2 y después el 3 (o el 3.1 y el 3.2) puesto que los contenidos del 1 aparecen en estos, y el 4 o bien, el 3 o el 4. Ahora, si de momento sólo quiere algo superficial, entonces le basta con el 1.

Hay otro libro, Aplicaciones .Net multiplataforma (Proyecto Mono), cuyo estudio está pensado para que se haga después del 3 (Enciclopedia de Microsoft Visual C#), sólo si está interesado en el desarrollo de aplicaciones que puedan ejecutarse en múltiples plataformas: Windows, Linux, Mac OS X, etc. Esto es, si usted desarrolla sobre plataformas LINUX o si desea que su aplicación sea multiplataforma, este libro le explica cómo hacerlo con .NET 2.0, PostgreSQL y Apache. Mono es un proyecto de código abierto para crear un entorno de desarrollo multiplataforma compatible con Microsoft .NET Framework para el mundo Unix, entre otros.

Puede ver más detalles sobre estos libros en mi Web.

Estoy interesado en el desarrollo de aplicaciones con Visual Basic. He entrado en su Web y he visto que ha escrito varios libros sobre este tema. ¿Me puede aconsejar con cuál debo empezar?

Si ha echado una ojeada a mis publicaciones Visual Basic, habrá observado estos libros basados en la biblioteca Microsoft .NET:

1.- Microsoft Visual Basic .NET. Lenguaje y aplicaciones. Este libro se centra en la programación básica: tipos, sentencias, matrices, métodos, ficheros, etc., y hace una introducción a las interfaces gráficas, a las bases de datos y a las aplicaciones para Internet.

2.- Microsoft Visual Basic .NET. Curso de programación. Este otro libro cubre la programación básica (expuesta en menor medida en el libro 1) y la programación orientada a objetos (POO) en detalle: clases, clases derivadas, interfaces, espacios de nombres, excepciones, etc. Después, utilizando la POO, añade otros temas como estructuras dinámicas de datos, algoritmos de uso común, hilos (programación concurrente), etc. Este sí que es un libro de programación con Visual Basic en toda su extensión.

3.- Enciclopedia de Microsoft Visual Basic. Interfaces gráficas y aplicaciones para Internet con Windows Forms y ASP.NET. Este libro cubre el desarrollo de aplicaciones con ventanas (interfaces gráficas), bases de datos, aplicaciones para Internet de n capas (formularios Web y servicios Web) y termina con una introducción a la programación de móviles. Este libro es el más interesante para un profesional que quiera dedicarse al desarrollo de aplicaciones de escritorio o Web utilizando Visual Basic. Para acceder sin dificultades al contenido de este libro es necesario haber adquirido los conocimientos explicados en el anterior, el 2. Esto es, el libro 3 es una continuación del 2.

Hay otros dos libros, 3.1.-Visual Basic. Aplicaciones de escritorio con Windows Forms y 3.2.-Visual Basic. Aplicaciones web con ASP.NET, que cubren la misma materia que el 3 (pero actualizada; el 3 ya no será actualizado). El primero, como su nombre indica, cubre el desarrollo de aplicaciones de escritorio con Windows Forms y el acceso a bases de datos utilizando diferentes técnicas; y el segundo, como su nombre indica, cubre el desarrollo de aplicaciones web a base de formularios y servicios web (incluyendo acceso a bases de datos).

Esta división en dos libros de la materia expuesta en el libro 3 permitirá al lector acceder por separado al aprendizaje de un tipo u otro de desarrollo de aplicaciones. No obstante, como los formularios web ASP.NET estudiados en Visual Basic. Aplicaciones web con ASP.NET se apoyan en controles de servidor web que generan código HTML automáticamente y emulan el modelo de programación basado en eventos de los formularios Windows, el lector, para el estudio de la materia expuesta en este libro, debe conocer la materia expuesta en el libro Visual Basic. Aplicaciones de escritorio con Windows Forms.

4.- Visual Basic. Interfaces gráficas y aplicaciones para Internet con WPF, WCF y Silverlight. Este libro cubre el desarrollo de aplicaciones con ventanas (interfaces gráficas), bases de datos, aplicaciones para Internet de n capas (formularios Web, servicios WCF) utilizando básicamente las bibliotecas WPF, WCF y Silverlight, como alternativa a Windows Forms y a ASP.NET. Este libro es el más interesante para un profesional que quiera dedicarse al desarrollo de aplicaciones de escritorio o Web utilizando las tecnologías indicadas. Para acceder sin dificultades al contenido de este libro, se sugiere tener conocimientos sobre la temática tratada en el libro 3, aunque, con un poco más de esfuerzo, también podríamos acceder una vez adquiridos los conocimientos explicados en el libro 2.

Para empezar, yo elegiría primero el 2 y después el 3 (o el 3.1 y el 3.2) puesto que los contenidos del 1 aparecen en estos, y el 4 o bien, el 3 o el 4. Ahora, si de momento sólo quiere algo superficial, entonces le basta con el 1.

Puede ver más detalles sobre estos libros en mi Web.

Estoy interesado en el desarrollo de aplicaciones con C/C++. He entrado en su Web y he visto que ha escrito varios libros sobre este tema. ¿Me puede aconsejar con cuál debo empezar?

Si ha echado una ojeada a mis publicaciones C/C++, habrá observado estos libros:

1.- C/C++. Curso de programación. Este libro se centra en la programación básica: tipos, sentencias, matrices, punteros, funciones, ficheros, etc., utilizando la biblioteca estándar de C y continúa con estructuras dinámicas de datos (listas y árboles) y con el estudio de varios algoritmos de uso común.

2.- Programación orientada a objetos con C++. Este otro libro cubre la programación orientada a objetos (POO) en detalle: clases, operadores sobrecargados, clases derivadas, plantillas, excepciones, flujos, etc., utilizando la biblioteca estándar de C++. Después, utilizando la POO, expone el trabajo con hilos (programación concurrente).

3.- Enciclopedia del lenguaje C++. Este libro cubre la programación básica (como el libro 1), pero utilizando ahora la biblioteca estándar de C++, y la programación orientada a objetos (POO) con C++ en detalle. Después, utilizando la POO, añade otros temas como estructuras dinámicas de datos, algoritmos de uso común, hilos (programación concurrente), etc. Este es un libro puro de C++.

Si quiere aprender a programar utilizando el lenguaje C, tendrá que elegir el libro 1. Si después quiere continuar aprendiendo programación orientada a objetos con C++, tendrá que elegir el 2 o el 3, y si lo que quiere es aprender programación básica y orientada a objetos con C++, le basta con el libro 3.

Hay otro libro, Microsoft Visual C++. Aplicaciones para Win32, cuyo estudio está pensado para que se haga después del 2 o del 3, sólo si está interesado en el desarrollo de aplicaciones de ventanas (interfaces gráficas) y acceso a bases de datos sobre una plataforma Windows utilizando la biblioteca MFC (Microsoft Foundation Class). MFC es una biblioteca anterior a .NET que, aunque aún está vigente, ha sido sustituida ampliamente por la biblioteca .NET.

Y hay otro libro, Microsoft Visual C++. Programación avanzada en Win32, continuación del anterior, por lo tanto basado también en la biblioteca MFC, en el que se explica el trabajo con hilos, las comunicaciones serie RS232, la construcción de componentes software o de bibliotecas dinámicas, la implementación de aplicaciones para Internet, etc.

Puede ver más detalles sobre estos libros en mi Web.

¿Qué lenguaje de programación debo elegir para escribir una aplicación de escritorio? ¿Y para una aplicación Web?

Tanto si tiene que desarrollar aplicaciones Web como aplicaciones de escritorio, las plataformas de desarrollo más maduras y extendidas probablemente son .NET, Java y Python (Django).

Si decide usar .NET:
a) En el sistema operativo Windows, recomiendo el lenguaje C#, el entorno de desarrollo integrado (EDI) MS Visual Studio, el servidor de base de datos SQL Server y servidor de aplicaciones IIS.
b) Si usa Linux/Mac OS X, puede utilizar la plataforma Mono o .NET Core que es compatible con .NET. Como lenguaje recomiendo C#, como servidor de base de datos PostgreSQL, MySQL u otro, y como servidor de aplicaciones Apache-Tomcat.

Si por el contrario se decanta por Java, las herramientas a su disposición son las mismas independientemente del sistema operativo con que trabaje; esto es: NetBeans como EDI, un servidor de base de datos como PostgreSQL, MySQL u otro, y como servidor de aplicaciones GlassFish o Apache-Tomcat.

Cabe destacar que el lenguaje nativo de .NET es C# pero pueden utilizarse otros lenguajes como Visual Basic .NET, C/C++, Java, etc. En cualquier caso no importa mucho el lenguaje (elija el que más le guste), sino las bibliotecas y herramientas de desarrollo que aportan las distintas plataformas de desarrollo.

Si decide usar Python (Django), en el sistema operativo Windows, recomiendo el entorno de desarrollo integrado (EDI) MS Visual Studio, un servidor de base de datos como PostgreSQL, SQLite, o el servidor de base de datos SQL Server, y el servidor de aplicaciones IIS.

A mí personalmente me gusta la plataforma .NET y el lenguaje C#, ya que aporta muy buenas herramientas de desarrollo (puede descargarse una versión gratuita desde la página Utilidades de mi Web), pero hay que reconocer que hay también mucha gente desarrollando con Java, con PHP, Python, etc. Una de las ventajas de .NET es que es multilenguaje y ahora con el Proyecto Mono o .NET Core es también multiplataforma, lo que nos permitirá utilizar una máquina Windows, Linux o Mac OS X como servidor para nuestras aplicaciones.

Una alternativa a la plataforma .NET y el lenguaje C# es Python y Django. Está disponible para WindowsLinux/UNIXmacOS, y otros. La herramienta de desarrollo puede ser también Visual Studio. Mi experiencia con este lenguaje y el entorno de desarrollo VS ha sido muy positiva; lo recomiendo para todo tipo de aplicaciones.

¿Qué relación tienen con .NET los libros que ha publicado sobre Visual C++?

Ninguna. Esos libros explican cómo escribir aplicaciones de ventanas (interfaces gráficas), cómo acceder a bases de datos y cómo escribir aplicaciones para Internet sobre una plataforma Windows utilizando la biblioteca MFC (Microsoft Foundation Class). MFC es una biblioteca anterior a .NET que, aunque aún está vigente (va incluida con Visual Studio), ha sido sustituida ampliamente por la biblioteca .NET.

C# versus Java.

Desde el punto de vista de los lenguajes de programación, C# y Java son muy similares, las bibliotecas básicas que les dan soporte también tienen mucho parecido y en cuanto a las plataformas de desarrollo en su conjunto y facilidad para escribir aplicaciones, me inclino por la plataforma .NET, de la cual forma parte C# y en la que se ha basado el proyecto Mono de software libre, o .NET Core, lo que ha hecho que .NET, además de multilenguaje, sea también multiplataforma.

¿Tiene publicados tutoriales en la Web?

Hay un vídeo en YouTube sobre "Enlaces a datos en WinForms y en WPF" (quizás ponga alguno más en el futuro), además de la información a la que puede acceder a partir del enlace Más detalles... que aparece debajo del resumen de cada uno de los libros mostrados en las páginas de mi Web.

Además de MS Visual C++, ¿qué otros entornos de desarrollo integrado para C/C++ puedo utilizar?

Yo normalmente utilizo Visual Studio, porque habitualmente desarrollo sobre Windows. Este EDI incluye un compilador C/C++ compatible 100% con los estándares de C/C++ y tiene un depurador muy bueno.
También suelo utilizar Code::Blocks, Eclipse, NetBeans y Dev-C++ (todos los puede descargar desde la página Utilidades de mi Web). Los tres primeros están disponibles para Windows y Linux. Su instalación requiere tener instaladas previamente las herramientas básicas de compilación y depuración; los paquetes más extendidos que proporcionan estas herramientas son MinGW y Cygwin para Windows y para Linux se pueden utilizar las proporcionadas por la propia distribución.
Code::Blocks proporciona un paquete de instalación para Windows que ya incluye MinGW. Una característica adicional de este EDI, tanto para Windows como para Linux, es que puede importar proyectos C++ de Visual Studio.
Dev-C++ ha sido desarrollado sólo para Windows y también hay un paquete de instalación que ya incluye MinGW. Actualmente, han dejado de desarrollarlo.

¿Piensa escribir sobre las nuevas versiones de VS, C#, VB y .NET?

Sí, pero ateniéndome a esta reflexión. Las especificaciones de .NET y de los lenguajes, como C# o VB, van por separado. Como es lógico, las versiones de cualquier producto, como C#, por ejemplo, van avanzando, pero guardando compatibilidad con las anteriores, por lo que los libros míos basados en este lenguaje se adaptan a esta especificación. Resumiendo:
C# 1.0 fue la primera versión de nuestro querido lenguaje de programación creado específicamente para la plataforma .NET.
C# 2.0 añadió más funcionalidad: tipos de datos genéricos, tipos anulables, métodos anónimos y algunas otras delicias sintácticas.
C# 3.0 añadió iniciadores de objetos, expresiones lambda, árboles de expresiones y métodos de extensión entre otras cosas, todo esto para lograr soportar LINQ. Algo parecido diríamos para VB.
C# 4.0 aporta programación dinámica, argumentos con nombre, parámetros con valor por omisión y covarianza y contravarianza. Así que lo más destacado de C# 4.0 es la posibilidad de manejar tipos dinámicos.
C# 5.0 facilita la programación asincrónica haciéndola casi tan sencilla como la síncrona, y la obtención de información de quien llamó al método, usando atributos de información del llamador (caller info attributes), útil para el seguimiento, la depuración y la creación de herramientas de diagnóstico.
C# 6.0 incluye un montón de pequeñas mejoras que mejoran la productividad; por ejemplo, iniciadores para las propiedades-auto, constructores primarios, using static, etc., y así sucesivamente.

Por otra parte, .NET es una plataforma de desarrollo compuesta básicamente por el CLR (la máquina virtual), la BCL (la biblioteca básica) y un conjunto de lenguajes de programación, entre los que se encuentran C# y VB. .NET partió con la versión 1.0 y pasó por la 1.1, 2.0, 3.0, 3.5 (la cual se suministró con Visual Studio 2008, e incluyó, entre otras cosas, LINQ, C# 3.0, WPF, WCF, WF, ASP.NET 3.5, AJAX, VSTO y Silverlight), 4.0 (la cual se suministró con Visual Studio 2010, e incluyó una serie de novedades tales como: C# 4.0, VB 10, F#, Parallel Extensions, ASP.NET 4.0, Entity Framework, ADO.NET Data Services y Managed Extensibility Framework, entre otras). Y todo esto para qué. Pues para crear aplicaciones de Internet más ricas. Se trata realmente de nuevas bibliotecas que nos permiten hacer lo que ya hacíamos con .NET 2.0 y muchas cosas más, pero de una forma más vistosa, más rápida y más eficiente. Si miramos hacia atrás (Win32), teníamos la biblioteca MFC y después llegó .NET que ha pasado por varias versiones con el propósito de facilitar al desarrollador la realización de aplicaciones más ricas en menos tiempo.

Con todo esto quiero decir que Windows Forms, ASP.NET, WPF, WCF y Silverlight continúan, que LINQ es un lenguaje de consulta (integrado en el propio lenguaje C# o VB) como alternativa para el acceso a bases de datos, que Entity Framework (con LINQ to Entities) es el proveedor LINQ recomendado por Microsoft para acceso a bases de datos relacionales a partir de VS 2010, que .NET Core es una plataforma de desarrollo de código abierto para los sistemas operativos Windows, Linux y MacOS, para el diseño y construcción de aplicaciones basadas en la nube, etc. Por todo ello, estoy escribiendo nuevos temas y actualizando otros ya existentes para que mis libros, los actuales y los de nueva aparición, queden adaptados a las últimas versiones. Los nuevos serán una extensión/continuación a mis libros actuales que son la base de todo esto.

¿Piensa editar un libro en el que se trate desde cero el desarrollo de aplicaciones de escritorio y para Internet sobre la plataforma Mono?

El estudio del libro Aplicaciones .Net multiplataforma demuestra que podemos desarrollar una aplicación de escritorio o una aplicación Web 2.0 con Microsoft Visual Studio y después, la podemos instalar y ejecutar en una máquina Linux que tenga instalado Mono. Esto quiere decir que lo explicado en los otros libros que he escrito sobre C#, véase la pregunta 2, es aplicable, en parte, a la plataforma Mono. Esto es, no veo la necesidad de escribir libros específicos para Mono; con el citado al principio de este párrafo, creo que es suficiente para saber cómo llevar sobre esta plataforma lo contado en los otros libros.

¿Puedo desarrollar aplicaciones .Net sobre una máquina Linux o Mac OS X?

Sí. No solamente puede desarrollarlas, sino instalarlas en las mismas para su ejecución. Esto es justamente lo que explica el libro Aplicaciones .Net multiplataforma . Vea también las respuestas a la pregunta 2, a la 5 y a la 11.

¿Cómo se imprime un documento de una o más páginas desde Java?

Para imprimir un documento en Java podemos utilizar la clase java.awt.print.PrinterJob para controlar la impresión y la interfaz Printable del mismo paquete. El objeto pintor tiene que implementar esta interfaz que define el método:
int print(Graphics graphics, PageFormat pageFormat, int pageIndex)
Cuando se inicia la impresión llamando al método PrinterJob.print, el control se pasa al sistema de impresión hasta que todas las páginas hayan sido impresas. Los parámetros de Printable.print incluyen un objeto PageFormat que describe el área de impresión de la página, necesario para hacer que el contenido se ajuste a la página, y el índice de la página, que especifica el índice de base cero de la página a imprimir.
Ejemplo: Main.java y resultado.

¿Dónde puedo ver las diapositivas de la conferencia "Windows Forms vs WPF"?

Haz clic aquí.