An icon of three stars overlayed on top of each other in varying shades of pink.
Skyler Koba
An icon of three stars overlayed on top of each other in varying shades of pink.
Skyler Koba

Digital Literacy Application: Developing an application using Java GUI to bridge the digital divide in Spanish speaking communities

Combining my personal interests in linguistics and UX/UI while challenging my Java skillset
Timeline: FALL 2024
Skyler Koba

Posted

12

/

31

/

2025

A picture of glasses resting on the trackpad of a computer that has code files pulled up on the monitor.

Anti-ode to Java GUI

I’d like to start off this post by saying that if you’ve ever had the displeasure of attempting to code a GUI using Java, I feel for you, I see you, and I support you – you are not alone, although the countless hours trying and failing to find a syntax error might make you feel otherwise at times.

All jokes aside, my introduction to Java GUI was quite like jumping into the shower without waiting for the water to heat up first. During my junior year at Penn State, I took a studio course in Java called IST 261. The class itself was loosely structured; handing us almost complete control over the direction of our individual projects and only requiring that we (1) use Java, and (2) complete any required milestones based on Object-Oriented coding.

Given the absence of typical hand-held course structure (and this being the first introduction to applying basic Java to software development), it’s easy to see why someone might flounder when asked to create a project from scratch. But luckily, my first two years in college thoroughly prepared me by way of countless YouTube videos and StackOverflow threads—my north stars while I navigated uncharted waters.

Starting the Project

But what did I choose to work on? Well, due to my effervescent interest in the Spanish language (and language in general), as well as my personal goal to integrate it into almost everything that I do, I chose to develop a digital literacy application for Spanish speakers.

To put it simply, I built a lesson-based application using feedback loops and local storage.

In terms of feasibility, I decided that I could accomplish this due to my previous knowledge of Java classes (abstract classes, interfaces, etc.). The app would teach users how to operate various internet interfaces of varying difficulty levels, such as using the search bar, emails, and video calls. Originally, I wanted to include more lesson types—like internet etiquette and safety tips—but this proved to be difficult given the time constraints of the semester.

Essentially, there would be an abstract “Lesson” class, which defined the based structure of each lesson as they appeared on the GUI. Then, each specific lesson, like Email and VideoCall would inherit the Lesson class features while also adding their specific content and functionality. Sounds relatively simple, right? Oh, sweet naive child…I couldn’t even begin to comprehend the true face of the ugly, ugly creation to come: chock-full of fragile little Java Swing components like a poorly balanced China cabinet.

A screenshot of the Search lesson of the application.
A screenshot of the Transaction lesson on the application.
A person touching acomputer screen with code on it

Project Challenges

Despite its character flaws, I am very proud of my project. Afterall, its functionality is solid, its feedback loops and local storage intact, and each lesson meets each milestone—resulting in a more than satisfactory grade. In fact, I had accomplished 90% of what I had planned for within the first week of the semester.

Unfortunately, this would turn out to be part of my undoing.

Why? I had designed my project without leaving substantial leeway for structural adjustments required later in the semester. I fell into the one software development lifecycle (SDLC) that my professors had spent semesters trying to unteach: Waterfall.

A diagram comparing the Waterfall software lifecycle and the Agile software lifecycle.
A diagram comparing the Waterfall software lifecycle and the Agile software lifecycle.

Image Source: https://instituteprojectmanagement.com/blog/waterfall-methodology/

The main reason why Scrum/Agile methodology is considered the golden standard of software development is due to the pitfall of wasting resources (i.e., time, money) by deciding on solutions before knowing the extent of the problem scenario. By jumping the gun, I had unknowingly subjected myself to hours upon hours of redesigning the structure of the application in order include the course requirements that were made known to us later in the semester.

But this was only part of the issue…

Once I tackled the structural adjustments, I tried to work on the design. This project not only tested my ability to merge UX/UI concepts and functionality, but also my patience. While utilizing Java Swing components proved useful, I struggled to use the built-in GUI builder and resorted to manually coding most Swing elements to fit my concept. Unfortunately, this meant that I spent many tedious hours trying to make Swing elements look like website UI (otherwise known as a sisyphisian dilemma). In fact, I even tried using XML files to mimic CSS at one point. But this endeavor ultimately failed too.

In these trying times, I often found myself wishing that I could've developed the application as a JavaScript PWA instead…though I pushed through for the learning experience (nevermind the fact that the course was required for my degree).

An image of the Java Swing logo, depicting a monkey over the words "Java Swing".

Takeaways

Honestly, even though I had a lot of headaches with this project, I take a lot of pride in the fact that I was able to accomplish something like this. After working on this application, I've become more confident in my abilities as a programmer.

I learned a lot about Java, programming, and project management throughout this experience, including:

  • Using JavaSwing to develop a GUI to gather user input and issue feedback

  • Managing a project timeline while also keeping solutions relatively open-ended

  • Organizing file structures in complex projects

  • Using Controllers, Viewers, and Interfaces to manage GUI logic

  • Saving user input using Persistance

Overall, I'm glad I was forced to develop this project in GUI. It gave me a lot of insight into programming logic that can be applied to learning other coding languages, not to mention taught me a valuable lesson about project management and expectations. And even though my UI is very very ugly, I was extremely happy to begin developing a project about something that I genuinely have a lot of interest in pursuing: expanding technological accessibility for Spanish speaking communities.

Website designed by Skyler Koba, created with Framer.com

Website designed by Skyler Koba, created with Framer.com

Create a free website with Framer, the website builder loved by startups, designers and agencies.