Pages

Wednesday, August 19, 2020

Day 3: Code

Notes from Yesterday

  • My kid is excited, which makes everything easier.
  • Apparently they don't teach kids UNIX in third grade.
  • 30 minutes later and she knows basic commands.
  • Raspbian has some OSGI woes in regard to Eclipse. 
  • We were able to successfully attach her fancy Bluetooth keyboard and mouse.
  • Sublime does not have an ARM version and is closed-source.  Shame. Shame. Shame.
  • Lots of sites are claiming the OpenJDK implementation for ARM is slow.  I may have to find a replacement JVM once we get into heavyweight components: video, multi-threaded web, parallel file processing, etc. The issue won't impact us for awhile, but I really despise Oracle's licensing model and I've been burned by IBM in the past. We may be forced to pursue OpenJ9.


Java Lessons Begin

Today's Goal:  to have her creating simple Java classes and running them from the command-line.

NOTE: Having taught a good number of people to program in Java, I know for a fact the students who learn from the command-line are much better at debugging issues than those who start immediately with an IDE. I'd like to thank one of my college professors for this insight.  He required all of us to learn how to manage pixels and manipulate world coordinates using linear algebra and calculus before allowing us to use native OpenGL transformations.  Knowing how it all works steers your decision-making later on, and helps you eek out performance gains where others have no options.

If you are asking "why Java?", you may not be aware of the following:
  1. Java has truly free options, as opposed to reciprocally licensed compilers and virtual machines, unlike other programming languages that hinder you from distributing your products without fees and addendums.
  2. Java is available on all platforms (WORA / Write Once Run Anywhere)
  3. Java has commercial-grade JVM's available for industry-level performance.
  4. Most web hosting service providers support Java for server-side complexity: ecommerce, database, queuing, additional security, NLP, etc.
  5. Learning Java will make you a much better Javascript programmer.
  6. Java has hardware acceleration hooks available (graphics, audio, cpu, etc.).
  7. You can call other languages from Java (in lieu of being sandboxed).
  8. Java now has non-blocking IO and full multichannel network support.
  9. Java is auto-documenting.  Replace javac with javadoc and you generate documentation in printable and revision-controllable HTML.
  10. Java has rigid certification paths: business developer, web component dev, architect, etc.
  11. Java has hardware hooks enabling interaction and control of accessible hardware.
  12. Java is well-managed via Maven (meaning you have direct control over which versions are used to produce your compiled product)
  13. Java has a very active community.  Google searches yield tons of answers.
  14. Java security is transparent and vulnerabilities can be discovered using numerous open-source tools and off-the-shelf products.
  15. Java vulnerabilities and proposed remediation options are published hourly via NIST, as opposed to other languages where you hope your code is safe.
  16. Java open-source libraries are now well-published in regard to safe use, vulnerability count, and operational risk via OpenHub.
  17. I know Java and am willing to share my code with anyone who asks (20+ years of everything).

No comments: