I believe there are few runtimes out there that have such a good monitoring and profiling tools for free and out of the box as Java. Java Flight Recorder, remote debugging and monitoring can be really useful for rare production performance issues.
It's a matter of perspective. When one witnessed it from times of Pong until now, it is maybe much easier to appreciate the whole journey.
I still find myself trying to save bandwidth on my internet connection that was very scarce resource not-that-long-ago. When I see people listening to music via youtube, unnecessarily transfering all that video content that nobody really watch, I want to cry :). Same with programming - going from ZX to where we are now, you can easily feel the luxury of having almost infinite memory and CPU power. And of course, games now are hardly comparable to what we had on ZX.
Great thing is to step back and try to program things like Arduino or ESP8266/ESP32 where you, again, have to think twice about resources.
This is true. What I see in my country is that initial product is maybe expensive, but still somehow acceptable. Problem is that, for some reason unknown to me, government does not gain rights to modify implemented solution and can't bring in another vendor to implement either next phase or do maintenance of the solution. And this introduces many years long vendor lock-in that pays off.
This is why I wonder about the reasoning in the article. You have platforms that are NOT walled gardens, where you CAN write your own great file manager and those also have same ballpark hardware, yet nobody rushed to write this groundbreaking filemanager that would trigger platform success remotely comparable to iPadOS. Maybe, this is not about walled gardens and filemanagers? Maybe there are best tools for certain tasks and for author's job tablet is just not the right one? Since I got my first ipad 10 years ago I almost exclusively read things on it instead of my notebook. And I read a lot and it is part of my work. But I never expected it to replace my notebook or phone.
Just have a look on outbreak of Electron apps. People choose to use language they know and with which they can deliver value effectively instead of C or assembler.
But this, of course, applies to every project in any language and is in no way limited to Java or OOP. It is always balance between delivering functionality now with some solution or later MAYBE better optimized.
Then in round two, optimized solution may be harder to maintain and extend, or further optimization may be de-prioritized to some new functionality with higher business value. We all know it.
You are trying to project your belief to all Java applications and this simply does not work. There are both good apps and not good apps and there are many metrics to evaluate "good".
It depends on Java version that you use. Recent GC returns unused memory back to OS [1] and class data sharing can speed up startup time of your microservices and save memory as shared classes are loaded only once for all JVMs [2]
In late 90s I ran our JUG website with homegrown CMS written in Java with servlets on slackware linux server running also MySQL and it had only 16MB of physical memory for everything. We are _very_ spoiled nowadays and tuning is simply not necessary for most of tasks.
I agree, this would make much more sense in areas with high labor costs, something like sea side resorts where you can produce many similar buildings with high building density.
My house is also built from concrete blocks, because they have quite good parameters when combined with good thermal insulation. Concrete walls were something like 3% of price of the house and they were done in a week, that is again something like 5% of (my) house construction time.
Concrete blocks can be produced locally with rather simple tools. It also has benefit that it may provide work to local people.
In poor regions, labor is cheap and creating workplaces is always benefit to local commnunity, so I wonder if automating this out is positive thing at all.
I'd like to see comparison of costs/benefits for houses built like this vs more traditional construction. Don't get me wrong, I love tech toys, but this looks very much as a solution looking for a problem.
One interesting thing for you may be Class-Data Sharing feature that keeps already parsed class data across restarts and can re-use it with other JVM instances running same code. It also allows JVM to share these data in memory with other JVMs running on same host so in some use cases it can both speed up startup time and save memory.
Using StringBuffer may be premature optimization. Java compiler will replace simple String concatenation with StringBuffer automatically [1] and you do not need to polute your code with StringBuffer unless you really find that to be performance bottleneck.
I worked in Finland in 2001-2002 in what we would call now startup and even lead managers or scientists in company were not in the office in July-August. They simply worked more during winter and spent as much of Finnish summer outside as possible. But as article mentions, it was usual to take long vacations even in government jobs - if you needed visa for your relative, you'd better have it before June, or you would get it in September, since clerks were out of office :).
How would that work? If they would get any hash that is not bound to them in any verifiable way, how does that prove to THEM that they are verifying their own vote?
Simplicity is definitely a virtue. When I maintain large codebase of 10+ year project, it is easy to spot where someone tried to be very clever, and it is rarely benefit for codebase maintainability and extendability in the long term. Things rarely get reused that much to take advantage of overcomplicated abstract solution. Most of the times developers do not predict future business requirements correctly and simple solution would be the better one.
I see your point, but this would make more sense for comparison of highway construction or other projects that require lot of people with average salary and common resources. High tech is, I believe, very competitive and you do not manh need 'common' people working on it. Also technologies used are not common and cannot easily take advantage of scale of indian economy.
Maybe consider that you are speaking about 67 millon per launch in 1969 dollar, which, according to quick google search is equivalent of 470 million in today's USD.
Yes, but you can turn it around and tell that people that use cars mostly in cities would have little to no incentive to be more efficient, because this externalizes harm to areas far away from them.
And, of course, even G1 does not fill all memory before it starts collecting. Even generational GCs before G1 divide memory into smaller areas and try to collect garbage quickly to get rid of short lived objects, so we're speaking about Java 6 timeframe. Example from my real world server - most of objects are collected at young generation, so gc costs are minimal, very few objects get promoted to old generation and full GC runs are very sporadic (and they are sub 1sec).
I'm not sure what your real world experience with Java is, but GC is actually quite good and in server side Java I had no issues for years. G1 evolves and I had no issues with it. In Java 12 there is ZGC that have similar goals as Shenandoah, too. It is not like Shenandoah is something that is intended to be mainstream in Java. While G1 is optimized for throughput, Shenandoah is sacrificing performance for very short stop-the-world phase. It really depends on your requirement which one is better. There were multiple GCs before and alternative vendors have their own, for sure. What is your current pick and why is it so much better?
JVM is really good tech, it allows ecosystems like Scala, Kotlin, Clojure etc to exist. Since Java 8 there is class data sharing that may reduce your startup time and memory requirements a lot, especialy if you run multiple instances with same classes on same server.
Java ahead of time compilation was experimental since Java 9 and GraalVM should also help a lot if startup time is critical.
Yes, but this is the point - they stick to ugly looking touchscreens that are guaranteed to work. They could take screens from some tablet for few bucks, but they know that when they sell 100000 of cars and 20% would fail within two years it would cost them a lot to fix within warranty. If they start to fail after warranty, it would be huge impact on their good will and resale value on those cars would be damaged.
But most of the value of value types would be in your own code to remove boilerplate code. From outside it will for sure be just another class so libraries and frameworks do not need to know abuot your value types.
If you do business with VAT registered company from different country, you do not pay VAT upfront with purchase, but you report it at the end of quarter (monthly if you are big enough). You will actually never pay this VAT if you are VAT registered company as you will report it and ask for refund at the same time.
On the the other hand, if you are doing business with local company you pay VAT with payment for service or goods and ask for refund at the end of quarter. Long term cost is same, but it blocks your resources (paid VAT) and it may be difference for some companies.
This sounds very unlikely. So SUN Microsystems claimed that you should run service for them because of GPL that had classpath exception? Even without that exception that is not how GPL works.
What if bees transfer these genes to your field next to customer that bought those special seeds? Should you worry about using seeds from your field due to possible legal issues?