4 ms·
Make? Jesus Christ people are still using that? It's like people don't realize that other languages have been created in the last 20 years
by 38 2y ago
Make? Jesus Christ people are still using that? It's like people don't realize that other languages have been created in the last 20 years
- mdp2021 2y agoSo which other actual alternative should we use for Android development besides Java and webapps.
- 38 2y agoI am not a fan of Java, but going from Java to C is not an improvement.
- shepherdjerred 2y agoIt depends purely on what you’re making. It would be silly to write low-level software in Java, or high-level software (with exceptions for software which would require a low-level language) in C.
- wiseowise 2y ago> It would be silly to write low-level software in Java Depends on what kind of low-level stuff.
- shepherdjerred 2y agoIf you're going to nit-pick then at least do us the favor of writing something interesting, like a case where Java was a surprisingly good choice or some interesting libraries. Yes, of course there are exceptions to every rule. In general, as much as I love the language, Java is not always going to be the best choice.
- yazzku 2y agoNo, it doesn't. Java is a piece of crap with JVMs imposing an 8-24 byte overhead per object, which destroys caching, memory footprint, and any chance of low-level optimization. Not only is the overhead bad, it's implementation-dependent, i.e. unpredictable. That, along with lacking SIMD, imposing stupid decisions like bounds checks on all array accesses, making arrays boxed (int[] is not an array of ints, sorry), or using exceptions for control flow, which is the wrong way to use exceptions, is a just part of the big laundry list of why Java is a piece of obsolete crap that nobody serious about low-level hardware programming uses. Java SE/ME is a fucking joke, as is every book I have read about "high performance Java". People who promote Java for low-level hardware programming, real-time systems, and the like, just have absolutely no fucking idea what they're talking about and they get their garbage published only because of the low standards of publishing nowadays. They do get the "Java Champ" badge from Oracle, though. Noobs award other noobs badges, as it turns out.
- foobazgt 2y ago> JVMs imposing an 8-24 byte overhead per object You want project Valhalla, or more specifically Value Objects, which are in preview [0]. If you really want the highest performance related to cache accesses, you want to arrange things as SoA (struct of arrays) anyway, which has approx 0 object overhead and doesn't require Value Objects. > Not only is the overhead bad, it's implementation-dependent, i.e. unpredictable. This is silly. This happens with all other languages, and Java will give you better results on average. Use a different compiler or runtime for your C code, or run it on a different processor architecture, and have fun tuning your code. > That, along with lacking SIMD The Vector API [1] is available in preview. > imposing stupid decisions like bounds checks on all array accesses It's widely understood that doing the opposite has been perhaps one of the largest mistakes in the history of the industry. JITs elide access checks when safe, and it's easier for them to do with high performance code that doesn't bounce around in memory and thrash cache. > making arrays boxed (int[] is not an array of ints, sorry) What does this even mean? An int[] is a linear array of 32-bit int values in memory. > or using exceptions for control flow, which is the wrong way to use exceptions Are we now just talking about a small slice of people who write bad code? > is a just part of the big laundry list of why Java is a piece of obsolete crap Ah, ok. Have a fine day. 0) https://openjdk.org/jeps/401 https://openjdk.org/jeps/401 1) https://openjdk.org/jeps/460 https://openjdk.org/jeps/460
- JoshTriplett 2y agoGoing from Java to C is a good step along the way towards supporting any language capable of calling C functions.
- mdhb 2y agoWe have WASM/WASI now which is almost certainly going to become the new gold standard of cross language interop.
- jayd16 2y agoQuite a few game engines work and don't use Make.
- mdp2021 2y agoGame engines that we can readily use to code for Android outside the Java and web frameworks? Which ones exactly?
- vertalexgraph 2y agoUnreal and Unity both target iOS and Android and are not "java" or "web frameworks"
- jayd16 2y agoAt least Unreal, Unity and Godot but most likely more target Android and iOS as well.
- kllrnohj 2y agoC++ or Rust? Or Zig? Or D? Kinda pretty much anything else tbh?
- mdp2021 2y agoSo what you are suggesting seems to be, rewrite android_native_app_glue.c in (say) Zig and compile to the .so? Good, but it would nice to see a proof of concept. Also to see how extensive the work has to be: I am not checking all the tree, but android_native_app_glue has includes itself: #include <android/configuration.h> #include <android/looper.h> #include <android/native_activity.h>
- yazzku 2y agoObviously the complete and utter crap that gradle/maven are is much better, right?
- wiseowise 2y agoYes. Definitely. Ignore your blind rage of Gradle/Maven for a second and realize that they’re literally next iterations of Make.
- yazzku 2y agoIt's not blind rage. I've used them, they're over-engineered crap, like most things Java, especially the abominations made at Apache land. You can't say Make is over-engineered; lacking, maybe, but it does what it's meant to do and not much of anything else.
- re-thc 2y ago> I've used them, they're over-engineered crap Compared to what? And in what way? And then for you to manually recreate it anyway? Like when you need NodeJs, typescript, Turborepo, webpack, babel and a whole list of tools and then you still need scripts to build and deploy? Yes Maven and Gradle has its problems, but which tool is exactly better? They all just have their pros and cons. Which tool / framework in Go allows you to update a single dependency instead of the 100 that you might need and generates OpenAPI docs for you, etc etc?
- zelphirkalt 2y agoMake can be as low level or high level as one wants. One simply runs shell commands with it mostly, except for in-built functions and using other shells. This means it all depends on the tooling one wants to use for a project. If it is a C project then probably some C compiler. If it is Python then probably some venv and Python. And so on. So it is very flexible. Only doesn't have a great syntax.