Hey! I am super excited
I created my first Java program. I used Atom to write the code and learned by myself how:
- Create a window GUI (JFrame)
- Add content to the GUI (JPanel)
- Add labels and buttons to the panel (JButton / JLabel)
- Retrieve data from a URL (HttpURLConnection, BufferedReader, Inputstreams …)
- Analyze JSON from the URL (Gson)
- Empty / static / public / private meanings and uses
- Create an ActionListener with actionPerformed () to trigger the refresh of data (later replaced by automatic refresh)
- Refresh the API data every 30 seconds (TimerTask / Timer)
- Update GUI with new data (JLabel setText ())
- Package / compile a Java program from the command line (javac, jar -cvmf), which was difficult due to dependency / packaging issues with Gson (Google's Java parser)
- Use Launch4j to compile the .jare .jar file to make it easy to share the program with everyone.
Here is a picture of the program with code behind
In total, it took me about 10 hours in total to learn everything and that version 1 was published. I will now use my program to learn how to use the NetBeans IDE. I think using an IDE will make life a lot easier and it will be good for compiling / detecting errors. I'm sure my program contains possible errors because I did not introduce anything to find out if the data API is unavailable or does not return the expected results. This can cause the program to hang or hang. There is also a freeze that occurs if you do not have internet access. In version 2, I hope to solve this problem. From there, I will create a thumbnail panel allowing the user to enter their own cryptocurrency credentials (eg the Bitcoin ID is BTC) to track them. They can enter the currency code or select a list that I will include by default. They will also be able to remove the tracking of a specific currency by clicking on a small X in the corner of the box when they are hovering over it (I think that's what I will do at least).
There is also a bug that says that if crypto prices go up (more decimals), it will push 'USDT'. (Tether) on the next line, which is hidden. The next version will automatically adjust the items so that no item is ever hidden and the size remains the same.
I will also update the GUI to have a toolbar at the top allowing them to access these settings and so on. The next version will not have the red bar and will be a better toolbar.
If you are interested, please note:
- The public API I use only allows 100,000 API calls per month, for each IP address.
- This means that if you open two computers at once on the same Internet, the program will fail in the middle of the month.
- Unfortunately, I have no way of solving this problem right now.
- You should only open this program on a single computer in your home / Internet at a time to avoid limiting the data rate.
- The program automatically updates every 30 seconds, allowing approximately 89,000 requests per month.
- Version 2 will allow the user to choose the refresh rate and view the number of API calls remaining for the month.
- Version 2 will also submit data to my own server to provide historical encryption data to wuCrypto users.
- This will allow users to view the old prices of cryptography, even before owning the software I've created.
- This will also allow me to provide users with free price updates, even if they have used their original 100,000 requests, which allows them to receive updates faster, because all the world acts as a single user. In other words, the user A asks the price in Bitcoin, I can say the new price to the user B even if there are 0 requests to the user B
You can download the file here:
The following page also contains the same data as my wuCrypto software & can be updated manually:
If you want to make sure that it is safe, I encourage you to scan it yourself. Here is an online analysis result, proving that it is safe:
I've used Launch4j (unsigned) to generate the .exe file from the Java .jar file, which can lead to scans (about 1 in 100) warning users because they are unsigned and installed automatically .
The only "outgoing" request that it makes is to extract the cryptocurrency data, which is done here to a public API tracked by IP address (limiting each IP to 100,000 monthly requests):