latency zbs in java: lower value cf c++@@

Warning — latency measurement gotchas … is zbs but not GTD or QQ

— My tech bet — Demand for latency QQ will remain higher in c++ than java

  • The market’s perception would catch up with reality (assuming java is really no slower than c++), but the catch-up could take 30 years.
  • the players focused on latency are unused to the interference [1] by the language. C++ is more free-wheeling
  • Like assembly, c++ is closer to hardware.
  • In general, by design Java is not as a natural a choice for low latency as c++ is, so even if java can match c++ in performance, it requires too much tweaking.
  • related to latency is efficiency. java is a high-level language and less efficient at the low level.

[1] In the same vein, (unlikely UDP) TCP interferes with data transmission rate control, so even if I control both sender and receive, I still have to cede control to TCP, which is a kernel component.

— jvm performance tuning is mainstream and socially meaningful iFF we focus on
* machine saturation
* throughput
* typical user-experience response time

— In contrast, a narrow niche area is micro-latency as in HFT

After listening to FPGA, off-heap memory latency … I feel the arms race of latency is limited to high-speed trading only. latency technology has limited economic value compared to mobile, cloud, cryptocurrency, or even data science and machine learning.




jav isn’t challenged by c++/c# but by high-level languages

  • I noticed at the beginning of this decade (2010-2012) c# mounted a credible challenge to dethrone java but has since lost momentum.
  • c++ had a renaissance with c++1x, but after 8 years I would say it failed to become a threat to java.

The other challengers to java seems to be domain-specific high level languages like javascript (browser and beyond), ruby-on-rails, php (web server side), perl (text processing), q (kdb). Not sure about Golang.

Python is the strongest challenger among them. Here I consider python a domain-specific language given its visible strengths in data science, machine-learning, black-box testing, and traditional process management. I sometimes consider python a general purpose language like java and c++, but i feel it’s not widely perceived as such, perhaps due to dynamic typing and efficiency.

C/c++ remains the default system programming language — that’s clear. Less clearly, Java remains the “default” application-development language on server side — but in this sentence the key words are vague.

Luckily for java developers, nowadays most of the work is on server side, including many mobile and cloud applications. In addition, java is viable for offline/batch job, data science, transaction-processing systems … Actually, I listed javascript as a java challenger because I think a lot of application functionalities are moving to client-side.

Luckily for java developers, a few internet powerhouses led by Google (and Alibaba) have chosen Java as the default language on server side. So have most Wall St firms.

WallSt server-side: java gain`mkt share #Greg#Sunil

I spoke to Greg on 22 Apr 2019.

If on server-side java / c# / c++ jobs add to 100%, what percentage is java. I said about 80%. He said 70-80%.

I told him “c# is mostly client-side”. He agreed and said “some buy-sides use c# on server-side”.

I also told Greg about my OC friend Sunil. OC uses server-side c# but according to Sunil, on the job market c# is mostly on GUI and java dominates server-side job market.

I told Greg that over the last 7 years, on server-side java has gained market share relative to c# and c++. Greg agreed.

I now feel the momentum is in java’s favor. Java is clearly easier to use than c++ and not that much slower. Beside c++ and c# the old challengers, is there any new challenger to java?

[19]if I had stayed ] java

I think every tsn experience and proposal has some “buts”, so does it mean we should stop trying?

No. If I had stayed within java/sql/perl then I would have been worse off —

  • fewer job opportunities, less broadened technical base
  • slightly more worry about job security
  • more worry about churn
  • more worry about outsourcing
  • no differentiation from millions of java guys
  • left behind by some of the alpha geeks who branch out and establish new strongholds.
    • My technical mind is the BROAD-n-deep, curious explorer type so it is stifled if confined to java
  • sql and perl both falling out of fashion

But ….

  • possibly more competent in terms of figure-things-out relative to team peers
  • possibly fewer stigmas and more respect
  • ^^ These factors depend mostly on localSys knowledge
  • not so much stress, so much painful struggle in the beginning
  • possibly an architect role, provided I stay long and invest heavily in localSys

Was leverage good on my multiple tsn attempts after GS? reasonable leverage in some attempts.

ibank c# shops moving to java #Ellen+Sunil

Update — a c# veteran in OC said server-centric systems prefer java, while client-centric systems still prefer c#. The OC c# system was server-centric, so presumably he has witnessed the decline of c# in his own space.

I also confirmed with two Wall Street WPF veterans that browser GUI systems have grown in capabilities and can now emulate WPF. These systems leverage on west coast innovations with javascript.


A Singapore banking recruiter shared with me her observation. I had earlier spoken to her a few times and she had earned my respect for her insight.

She said a few Singapore ibank departments were using c# before but now hiring java developers instead. I said c# is a newer language and I have never heard of such a migration. She didn’t address that but said java is apparently more open-source than c#.

I think this is a relatively isolated case. Some time in the past or future you may see java shops moving to c#.

She is very close to Standard Chartered bank (a c++ shop, as she acknowledged) and said SCB is hiring more java developers than before.

She said nowadays just about the only Singapore employers of c++ is HFT. I disagree. SCB, Macq and some ibanks still use some c++.

She said java is now the dominant language for internet companies, to my surprise. She said there’s now improving mobility between java developers in ibanks vs internet shops. I think she meant the big-data java roles, not core-java roles.

She said the SG banking job pool is dominated by java — out of 10 jobs, 9 are java jobs — “crazy” as she said. I guess less than half of those 9 jobs are coreJava.

##[19] cited strengths@java

In this post we compare c++, python, javascript, c#

  • [G3] Scalability and performance [1] – James Governor has a saying: “When web companies grow up, they become Java shops”.Java is built for scalability in mind, which is why it is so popular among enterprises and scaling startups. Twitter moved from Ruby to Java for scaling purposes.
  • [G9] community support [1] such as stackoverflow —
  • [G9] portability [1] — on Linux and Android.
  • [G9] versatile — For web, batch jobs, and server-side. MS is a java shop, using java for trading. but DDAM is not a typical MS app. DDAM has many batch jobs but the UI is all in web java.
    • python and c++ are also versatile
  • [G5] Java has high correlation with fashionable technologies — hadoop; cloud; big data; microservices… Python and javascript are also in the league.
  • [G3] proven —
    • web apps are the biggest market segment. Some (js/php/ruby) of the top 10 most popular languages are used exclusive for web. Java is more proven than c#, python, c++.
    • enterprise apps (complex business logic + DB) are my primary focus. java is more proven than python, javascript, php, c#
  • [G3=a top-3 strength]

[1] explains Java’s popularity


c++changed more than coreJava: QQ perspective

Recap — A QQ topic is defined as a “hard interview topic that’s never needed in projects”.

Background — I used to feel as new versions of an old language get adopted, the QQ interview topics don’t change much. I can see that in java7, c#, perl6, python3.

To my surprise, compared to java7/8, c++0x has more disruptive impact on QQ questions. Why? Here are my guesses:

  • Reason: low-level —- c++ is more low-level than java at least in terms of interview topics. Both java8 and c++0x introduced many low-level changes, but the java interviewers don’t care that much.
  • Reason: performance —- c++0x changes have performance impact esp. latency impact, which is the hot focus of my target c++ employers. In contrast, java8 doesn’t have much performance impact, and java employers are less latency-sensitive.
  • Reason: template  —- c++0x feature set has a disproportionate amount of TMP features which are very hard. No such “big rock” in java.
    • move/forward, enable_if, type traits

Q: if that’s the case, for my career longevity, is c++ a better domain than java?
A: I’m still biased in favor or low-level languages

Q: is that a form of technology churn?
A: yes since the c++11 QQ topics are likely to show up less over the years, replaced by newer features.

strong coreJava candd are most mobile

Jxee guys face real barriers when breaking into core java. Same /scene/ when a c++ interviewer /grills/ a java candidate. These interviewers view their technical context as a level deeper and (for the skill level) a level higher. I have seen and noticed this perception many times.

Things are different in reverse — core java guys can move into jxee with relatively small effort. When jxee positions grow fast, the hiring teams often lower their requirements and take in core java guys. Fundamentally (as some would agree with me) the jxee add-on packages are not hard otherwise they won’t be popular.

Luckily for java guys, Javaland now has the most jobs and often well-paying jobs but ..

  1. c# guys can’t move into the huge java market. Ellen have seen many
  2. c++ is a harder language than java, but a disproportionate percentage (80%?) of c++ guys face real entry barrier when breaking into javaland.
  3. I wonder why..
  • I have heard of many c++ and c# veterans complain about the huge ecosystem in javaland.
  • I have spoken to several c++/c# friends. I think they don’t sink their teeth in java. Also a typical guy doesn’t want to abandon his traditional stronghold, even though in reality the stronghold is shrinking.
  • Age is a key factor. After you have gone though not only many years but also a tough accumulation phase on a steep learning curve, you are possibly afraid of going through the same.

##coreJava QQ topics: stand-out from crowd

Q: what core java QQ topics (not necessarily skills) to make you stand out from the crowd?

  1. (Best example) low-level core threading features — higher market value than ecosystem features like concurrency utilities, which are so numerous that most candidates are not expected to know in-depth
  2. jGC
  3. latency tuning — including JIT
  4. collections internals

— second tier QQ topics

  • reflection, AOP, bytecode engineering? never popular
  • advanced generics? out of fashion
  • class loader internals? out of fashion
  • JNI? never popular
  • jvm internals? never popular and never needed on any project

Forced2branch out@ java by age70@@

LotusNotes, FoxPro, Php, Perl-CGI programmers … had to branch out and take up new aggressive, colonizing technologies. Their massive T-investment (mostly GTD) in the old technologies has lost value.

Q: will I need to branch out of java till age 65@@

%%A: I don’t know.

In 2012 I thought I had to embrace the new technology of c# but now in 2019 I feel java dominance has grown, rather than eclipsed by c#

If I have to branch out to take up another technology, that colonizer will NOT be c++ or c#. I won’t speculate on other challengers.

java’s amazing perf^simplicity #c++/c#

* java’s syntax simplicity is on par with python, better than c# and much better than c++.
* java’s performance is on par with c# and c++, largely due to JVM and JIT

java has been popular on web servers, and crucially the newer mobile, cloud, big-data platforms, beating c++, c#, python

java’s adoption rate as a foundation platform or integration-target… is better than all other languages. Many products are built for java, on JVM or with java in mind. I’m deliberately vague here because I don’t want to spend too much time analyzing this vague, general observation.

[12]too many add-on packages piling up ] java^C++

(blogging) Biggest problem facing a new or intermediate java developer — too much new “stuff”, created by open source or commercial developers. Software re-usability? Software Component industry?…

Some job candidates are better able to articulate about these — advantage. On the real job, I don’t feel a developer needs to know so many java utilities (Architects?)

More than 3 C++ developers told me they prefer c++ over java for this reason. They told me that about the only add-on library they use is STL. Everything else is part of the core language. Some of them tell me in their trading/finance systems, other libraries are less used than STL — smart pointers + a few boost modules + some threading library such as pthreads. In contrast, I can sense they feel a modern day java system requires so many add-on items that it looks daunting and overwhelming.

The most influential books on c++ were written in the early 90’s (or earlier?)… Bottom line — If you know core language + STL you qualify for c++ jobs today. By the way, you don’t need deep expertise in template meta-programming or multiple inheritance as these are rarely used in practice.

In contrast, Java has many core (and some low-level add-on) components kept stable — such as memory model and core multi-threading, basic collections, RMI, serialization, bytecode instrumentation, reflection, JNI … This should in theory give reassurance to developers and job seekers. In reality, on the java (job) market stable core/infrastructure/fundamentals are overshadowed and drown out by the (noisy) new add-on libraries such as spring, hibernate, JSF, gwt, ejb, rich faces,

I feel the java infrastructure technologies are more important to a java app(also to a java project or to a java team), but I continually meet hiring side asking x years of hands-on experience with this or that flavor-of-the-month add-on gadgets. Is any of these packages in the core language layers? I don’t feel very sure.

(I feel some are — cglib, leak detectors… but these aren’t in job specs….)

I suspect many hiring managers don’t care about those extra keywords and just want to hire strong fundamentals, but they are forced to add those flavor-of-the-month keywords to attract talents. Both sides assume those hot new things are attractive to the other side, so they want to “flash” those new gadgets.

Whatever the motivation, result is a lot of new add-on gadgets we developers are basically forced to learn. “Keep running or perish.” — it’s tiring.

major forces shaping future of java (+software industry)

* B — software vendors like Bbbill Gates
* C — open source Cccommunity, a new force significant only in the last 20 years.
* D — Dddownstream industries like Wall Street and web 2.0
* A — Aaaacademic, research including commercial R&D, and hardware innovation. This force represents the pushers of the frontier of technology
* government? not really a major force except in S’pore;). This game is largely market-driven and innovation-driven.

There are non-trivial overlaps and straddles, yet it’s good to keep the big picture simple without being simplistic.

php attacking java’s heartland

see other posts —
[[ %%thoughts on corporate adoption:php^java ]]

I think PHP is still lacking key enterprise features found in java (and to some extent .NET)

* the level of commitment by large vendors like BEA, Oracle, IBM,
* track record as a battle-tested strong player in large, complex projects. I can only think of wikipedia.

* OO –> see [[ php oo matching java ]]
* EAI support for a huge array of legacy enterprise systems — mainframe, ERP …
* SOA, Web Services@@ rudimentary in php
* greater transaction support, including XA.
* large non-HTTP systems like NextGen
* enterprise-scale ORM
* swing
* MQ support@@ rudimentary in php.
* OO design patterns@@ very little in PHP
* clustering
* rule engines like jrules
* declarative role-based security on a per-method level
* socket and network applications
* sophisticated unit test frameworks@@ could be developed for PHP
* portable. i think this could be one of java’s most fundamental strengths over C++.

php^java: corporate adoption

–my own theory
For now, java looks like longer-living than php but so did perl vs python, so did apple vs PC java/C++ have more /depth/ than php, perl, python — more to learn, more to explore, but that’s because developers contributed to them and put them to many many uses. java is now used to solve bigger problems than php, but in an earlier era of java vs c++, java was only for applets. things could change fast once developers gather around php. Look at linux vs Solaris.

PHP could expand to embrace java features. Look at mysql vs oracle, c# vs java, or java vs c++.
The big power groups:
– open source developers,
– corporate backers like IBM, Oracle
– high-profile adopters,
– other software supporting each other