OCPJ8P

Reto conseguido: un navegador web en 5 días

¿Recuerdas cuando te dije que iba a comenzar con retos de programación, y que el primero iba a ser un navegador web? Pues ya lo tengo listo... aunque no en cinco días consecutivos. Estuve hasta arriba de trabajo, pero conseguí hacer hueco para encontrar esos cinco días de reto, y aquí tienes el resultado.

Introducción

Descripción del proyecto

La idea de este reto consistía en realizar un navegador web sencillo, en Java, con una interfaz realizada en JavaFX. El funcionamiento del navegador es el siguiente:

Además, existen dos botones para desplazarse hacia atrás y hacia delante en el historial, así como una barra de progreso en el borde inferior (desaparece una vez que la página está abierta).

Resultado del proyecto

El navegador funciona, pero con ciertas limitaciones. Al estar desprovisto de memoria, cada vez que lo abras tendrás que introducir tus datos personales si quieres acceder a un servicio. Además, la versión de las webs que se muestra es en ocasiones anticuada, lo cual, en principio, no tiene por qué ser un problema.

BerenWeb es un navegador libre. No dudes en descargar el código fuente y realizar las modificaciones y forks que desees al proyecto.

Hoy mismo comienzo a practicar mis conocimientos en #Java con BerenWeb, un sencillo proyecto de navegador #yoaprendojava

Compártelo

Características del proyecto

Herramientas utilizadas

Editor de diagramas de flujo

yEd es una herramienta muy poderosa para realizar diagramas de flujo, que es el primer paso en cualquier proyecto de programación. Antes de empezar a escribir código, tienes que tener una idea muy clara de la estructura de la aplicación que vas a desarrollar.

IDE

A la hora de programar, he optado por mis dos herramientas favoritas: IntelliJ IDEA para redactar el código y Gluon SceneBuilder para construir la interfaz. 

Sistema de control de versiones

El sistema de control de versiones que he utilizado ha sido git, sincronizado con mi repositorio en GitHub.

Librerías

Aparte de las librerías nativas de Java y JavaFX, he utilizado JFoeniX, una librería que sigue las directrices del material design, y Apache Commons Validator, para comprobar si el texto introducido en la barra de direcciones es una URL válida o no.

¿Qué he aprendido?

Lo más importante que he aprendido en este proyecto ha sido que es mejor crear un proyecto sencillo e ir complicándolo de manera paulatina, resolviendo un problema tras otro, sin querer hacer una aplicación perfecta a la primera. Una vez que el botón de Abrir funciona, pasar a implementar los botones del historial. Y así, una cosa cada vez.

En el aspecto técnico, aparte de las características concretas de este proyecto (como el utilizar un WebView para abrir páginas web), he ejercitado dos habilidades:

  • La construcción de interfaces, utilizando JavaFX.
  • El uso y análisis de herramientas que ofrece el sistema, así como de librerías que me ayudan a resolver problemas, sin tener que reinventar la rueda. Por ejemplo, la librería de Apache que he utilizado para validar las URLs.

¿Quieres participar en este proyecto?

Si estás aprendiendo a programar en Java, este proyecto puede ayudarte a desenvolverte con código ajeno y resolver problemas. De entrada, te doy dos propuestas que puedes resolver:

  • Como te he comentado más arriba, el navegador no posee ninguna base de datos, de manera que no puede memorizar datos introducidos. ¿Te animas a crear una base de datos?
  • Un problema que tiene el navegador es que, al introducir según qué palabras (como google o java), en lugar de abrirse la entrada correspondiente de Wikipedia el navegador intenta abrir https://www.google o https://www.java. ¿Eres capaz de resolverlo?
  • check
    Cuando la página web no existe, o cuando no hay conexión a internet, el navegador muestra una página en blanco. ¿Qué te parece hacer que muestre una imagen o un aviso?

¡Ánimo! Ya sabes que la mejor manera de aprender es practicar. ¡Juega cuanto quieras con este proyecto e introdúcele todas las modificaciones que desees!

Miguel Callejón Berenguer

Share
Published by
Miguel Callejón Berenguer

Recent Posts

ZonedDateTime e Instant en Java 8

¿Qué son ZonedDateTime e Instant en Java 8? Esta materia entra en el examen de…

6 años ago

Internacionalización y localización en Java

¿Sabes cómo funciona la internacionalización y localización en Java? O, antes de continuar, ¿sabes qué son…

6 años ago

Cómo exportar un proyecto JavaFX en IntelliJ

¿No sabes cómo exportar tu proyecto JavaFX en IntelliJ, y te gustaría aprender? Yo también…

6 años ago

Cómo utilizar instanceof en Java 8

¿Sabes cómo utilizar instanceof en Java 8? Con esta entrada comienzo una larga serie que…

7 años ago

Curso gratuito de IntelliJ Community Edition ¡en español!

¡ACTUALIZADO A LA VERSIÓN 2019.2.4! ¿Quieres un curso gratuito de Intellij, en español?  Directo al…

7 años ago

Cómo diseñar una interfaz para Android

Sé lo que estás pensando. Tienes una buena idea para una app, tienes claro la…

7 años ago