OSS Hacker, Developer Advocate and Entrepreneur at Codename One
Software developer with ~30 years of professional experience in a multitude of platforms/languages. JavaOne rockstar/highly rated speaker, author, blogger and open source hacker. Shai has extensive experience in the full stack of backend, desktop and mobile. This includes going all the way into the internals of VM implementation, debuggers etc. Shai started working with Java in 96 (the first public beta) and later on moved to VM porting/authoring/internals and development tools. Shai is the co-founder of Codename One, an Open Source project allowing Java developers to build native applications for all mobile platforms in Java. He's the coauthor of the open source LWUIT project from Sun Microsystems and has developed/worked on countless other projects both open source and closed source. Shai is also a developer advocate at Lightrun.
Stats
Reputation: | 6834 |
Pageviews: | 907.1K |
Articles: | 101 |
Comments: | 29 |
Modern API Management
When assessing prominent topics across DZone — and the software engineering space more broadly — it simply felt incomplete to conduct research on the larger impacts of data and the cloud without talking about such a crucial component of modern software architectures: APIs. Communication is key in an era when applications and data capabilities are growing increasingly complex. Therefore, we set our sights on investigating the emerging ways in which data that would otherwise be isolated can better integrate with and work alongside other app components and across systems.For DZone's 2024 Modern API Management Trend Report, we focused our research specifically on APIs' growing influence across domains, prevalent paradigms and implementation techniques, security strategies, AI, and automation. Alongside observations from our original research, practicing tech professionals from the DZone Community contributed articles addressing key topics in the API space, including automated API generation via no and low code; communication architecture design among systems, APIs, and microservices; GraphQL vs. REST; and the role of APIs in the modern cloud-native landscape.
Software Integration
Seamless communication — that, among other consequential advantages, is the ultimate goal when integrating your software. And today, integrating modern software means fusing various applications and/or systems — many times across distributed environments — with the common goal of unifying isolated data. This effort often signifies the transition of legacy applications to cloud-based systems and messaging infrastructure via microservices and REST APIs.So what's next? Where is the path to seamless communication and nuanced architecture taking us? Dive into our 2023 Software Integration Trend Report and fill the gaps among modern integration practices by exploring trends in APIs, microservices, and cloud-based systems and migrations. You have to integrate to innovate!
Comments
Jul 10, 2023 · Shai Almog
This was raised in the manifold slack and it isn't as simple as one might think since null is deeply ingrained in Java.
I'm guessing one can use the expression language to write a slightly shorter syntax than the optional syntax but I'm not sure how applicable it would be.
Jul 09, 2023 · Shai Almog
The specific GraphQL docs are pretty lacking. Unfortunately, I don't have too much experience with GraphQL so I couldn't do their implementation justice. There's the sample app here: https://github.com/manifold-systems/manifold-sample-graphql-app/
But I would suggest asking in the slack channel as Scott is pretty responsive to queries there.
Jun 22, 2023 · Shai Almog
For most cases where we have a natural value for an object that isn't null we should assign it when creating the variable. This can be by making a field final and requiring the value in the constructor etc.
But let's look at the cases where there's no such "natural" non-null object. If we still choose to make the object non-null then we allocate a "dummy" object to serve as a placeholder just so we can discard it later.
The cost in performance depends on what the compiler will translate your non-null code to. In some cases this is translated to null but usually this isn't the case. Currently Optional has noticeable (albeit small) overhead. But other compile time options might not be able to use null in all the same cases. Non-null is an abstraction over null and abstractions tend to leak in unpredictable ways.
Jun 21, 2023 · Shai Almog
I meant Kotlins approach etc.
Jun 21, 2023 · Shai Almog
Not really because they didn't publish the final syntax but as far as we know it will only be a marker tag indicating that it will be non-null. As far as I understood enforcement at the compiler level won't be deep since they can't change libraries etc. Previously they had syntax that denoted this in the class level indicating that an object lacks "identity" which is a synonym to pointer.
Jun 21, 2023 · Shai Almog
Notice I mentioned that Valhalla will add a not-null marker which is important for memory layout. Yes, that should go into the language but it's a different thing from the systems used by other languages.
Jun 20, 2023 · Shai Almog
That's a great point. This indeed drew some inspiration for a trend of that time called "design by contract". That mostly focused on asserts but the idea was to map all the various ways the object can fail for bad input.
This is also very powerful in combination with JavaDoc.
Apr 13, 2023 · Shai Almog
Right, I meant to say code rot.
Mar 07, 2023 · Shai Almog
Unfortunately the links in the post were removed during editing. The original is here: https://debugagent.com/open-source-maintenance-is-community-organizing
Feb 22, 2023 · Shai Almog
Yes. I did mention the events but didn't want to get into the nuances of the implementation. Since it's relatively young, I'm not sure if it will be a decent replacement to Kafka but it is a very interesting project.
Oct 05, 2022 · Shai Almog
That's why I mentioned Lombok which is still applicable. Records are improving though.
I think the lambda implementation was a bit broken which is the one problem with checked exceptions. I blame the lambda, not the exceptions.
I agree, a lot of complexity was added but newer languages are even more complex and don't have the same level of functionality. With the exception of JVM languages.
Oct 04, 2022 · Shai Almog
I think everyone defines this a bit differently. There's also the quiet firing where bosses assign bad tasks and create an unpleasant work environment.
I picked the more widely understood version of quiet quitting: doing exactly what the job description says. No more. No less. It's a legitimate thing. What's interesting is that it's a change for a lot of people. Why would people change that behavior?
Because the dime dropped for a lot of them. They understand their employer will dump them in a heartbeat, regardless of how hard they work. No reason to go the extra mile. That's OK when talking about overtime. It's not so great if you don't document your code because well documented code isn't benchmarked in your quarterly reviews.
Sep 30, 2022 · Shai Almog
Great quote!
A boss should never demand loyalty. It's something that's earned.
Mar 25, 2022 · Alex Omeyer
I'm not sure if Lightrun fits into the "fight technical debt" but debugging production is pretty much a universal "fixer" problem. I think our plugin is probably one of the coolest around (in my not so subjective opinion): https://lightrun.com/
Mar 01, 2022 · Reza Rahman
Great seeing your talks there!
Generally virtual conferences have a problem of audience participation. I noticed FOSDEM was MUCH better than the median cookie cutter conference in terms of participation. Not sure if it was due to the foojay room we were in or the conference itself though.
Jan 18, 2022 · Vladyslav Lubenskyi
It took well over a month of work. The main work was around the deployment of the native libraries and a lot went into the media code so it would use CEF instead of the built-in APIs of FX. That required recompiling CEF for every platform which took a lot of effort. Steve Hannah did most of the work there. I can connect you to him if you're interested. You can see the stuff he did in our repo: https://github.com/codenameone/CodenameOne/
Jan 18, 2022 · Vladyslav Lubenskyi
Did you two coordinate this?
https://dzone.com/articles/jxbrowser-and-javafx-webview
We use JCEF but played with JxBrowser in the past. It seems like an excellent solution. Since we're an open source project we picked CEF but it was a pretty challenging process.
Jan 18, 2022 · Vladimir Ikryanov
It was an uphill battle too. We had to compile our own version of CEF because the default version doesn't include support for 264 playback. That took a lot of time and pain.
But the end result is a modern/consistent browser over which we have more control regardless of the underlying JDK. So it paid off. Removing the FX dependency is a huge advantage.
Jan 15, 2022 · Vladimir Ikryanov
We chose to go with JCEF which is used by Intellij as well.
Jan 03, 2022 · Bertrand Florat
I very much agree with the UUID usage in DBs but some people don't: https://github.com/jhipster/generator-jhipster/issues/3060
To be fair, they are correct. There is a performance impact. I think it's something most of us can live with.
Nov 18, 2021 · Ogundiran Ayobami
The common term is time travel debugging. E.g. https://www.replay.io/
May 27, 2020 · Tara Simpson
Do you work for free?
Why do you expect professional developers who build tools to do what you don't?
If you can't spend on your craft then you're a hobbyist not a professional. When there's a better free product then I use it (e.g. Linux) but when the product delivers a lot of value over a free product then I make the calculation of my time that's saved. My time isn't free.
FYI If you mean "open source" then the core of webstorm is open source.
BTW Visual Studio Code also has a commercial portion that isn't "free"...
Mar 20, 2018 · Nyma Malik
I think you should compare react native to Kotlin Native or Kotlin + Codename One.
Mar 16, 2018 · Mohamed Labouardy
FYI All of the 4 things you mentioned at the bottom of the article as downsides of flutter don't exist in Codename One plus a lot of other advantages...
Feb 08, 2018 · Brian Fernandes
I work with all 3 IDE's since we produce plugins for all of them. Eclipse improved recently but it still lacks some capabilities e.g. the debugger in IntelliJ renders values of variables next to the line where they are mentioned... Eclipse has some power but it's very "opinionated" this isn't necessarilly bad but it makes it harder for beginners.
Feb 15, 2016 · Edvin Syse
I like some of the concepts of javafxpackager but from our experience with it I was pretty disappointed by the implementation. Its pretty buggy and spartan.
It seems that with every release of Java a new team comes along and completely reinvents distribution (webstart rewrites, Java plugin, packager etc.). The problem is that all of these approaches are damn awful. E.g. fxpackager needs both a Mac and a Windows machine. Signing (which is required on Mac OS) is a HUGE pain.
So FXLauncher looks promissing but the underlying fxpackager is the true problem.
Jan 01, 2016 · Daniel Stori
;-)
I would use the analogy of a cleaning person picking up the garbage. So he first comes along to check if the garbage is used by anyone and places a yellow sticker on everything that's used. Then he indiscriminately throws away everything that doesn't have a yellow sticker on it.
GC's are actually remarkably simple, its the implementation that gets a bit tricky specifically in regards to threads...
Jul 01, 2015 · Peter Soloninka
You should note in the article that this process is illegal and violates Apple's ToS. I doubt this will ever reach a court case or even trigger banning but Apple doesn't allow Mac OS virtualization unless it is done on a physical Mac machine.
So this process might be reasonable for a hobbyist but its not something you should be doing if you work for a major company.
At Codename One we use Mac's that we host in the cloud for our service and will soon also offer support to automatically generate the certificates for them. We also use them for the xcode build process so the full package can be maintained and still be 100% legal.
Jun 13, 2014 · Alec Noller
You failed to mention Codename One which doesn't quite fit any of the categories you mentioned but being completely based on Java is probably more relevant to the java dzone readership than all of the tools mentioned in the report.