24 ms·
Android Studio 4.0
- pjmlp 6y ago> Java 8 language support update: APIs you can use regardless of your app’s minimum API level Meanwhile in the real world, https://jdk.java.net/14/release-notes https://jdk.java.net/14/release-notes
- saagarjha 6y agoWhat's the status on Java 8 these days? Did Google ever finish implementing all of it?
- pjmlp 6y agoNot at all, as you can see from the release notes. You just need to go checking every now and then the gerrit AOSP checkins, they cherry pick stuff from OpenJDK, every version gets a little piece. Then they use this half baked support to sell Kotlin versus Java, and cleverly never compare Kotlin to the actual Java versions.
- saagarjha 6y agoI'm sure the push for Kotlin probably has something to do with the bitter lawsuit they're currently embroiled in, rather than a particular love for that language.
- etse 6y agoIf they only bought Sun when they had the chance, right?
- vondur 6y agoI still can't understand why they didn't purchase them vs Oracle. Such a waste of tech that ended up under Oracle's purview vs Google.
- lostmsu 6y agoConsidering Google still has not produced a really popular language, and Oracle managed to revive Java, I would not be so sad about that. Of course in hindsight buying Sun would have been better for Google.
- searchableguy 6y ago> Considering Google still has not produced a really popular language What about go-lang and dart?
- javajosh 6y ago"really popular" is subjective, and Go is pretty popular, but it's not anywhere near Java. Dart is not popular.
- pjmlp 6y agoAlso what many keep forgeting is that Oracle was with Sun on Java since the early days, they were even the first RDMS to support Java for stored procedures and designed the Network Computer with JavaOS together with Sun. From my point of view, Google chose not to buy Sun because they hoped that Sun would just burn to the ground and as such, they would get away with the way they approached the whole situation. On the other hand if Google had bought Sun, we would still most likely be stuck with Java 6 and just runtime improvements, if at all. If Go and Dart are any examples to go for.
- sangnoir 6y agoWhy buy the cow when you can get the (goat) milk for free? Before Sun was up for sale, Google chose to base its not-Java™ implementation on Apache Harmony (incubated at IBM). There was no way of knowing the farmer who'd buy the cow would claim goat milk infringes cow-milk protein IP (apologies for stretching the metaphor beyond breaking)
- pjmlp 6y agoMight be, then again, they would have done better that choosing a JVM based language for that. It isn't even as if they don't have their own languages. C++, Dart, Go, just pick one and provide a migration path. Don't sell Java compatibility and promise that even with #KotlinFirst, Java and C++ are still relevant for Android. As they did at Google IO 2019.
- dep_b 6y agoModern Java still isn’t as nice as Kotlin. It’s just not as terrible as the Java version for Android.
- The_Colonel 6y agoJava can't be as nice as Kotlin without breaking a ton of BC. So not gonna happen.
- 2OEH8eoCRo0 6y agoHonest question- why would anyone choose Java when starting a new software project today for any reason?
- zoomablemind 6y agoVery obviously asking, what's your 'recommended' choices and why?
- 2OEH8eoCRo0 6y agoI was asking in general not just about Java in relation to Android. Java has always felt like a clunky and closed language under the dictatorship of Oracle. Why not C++ or Rust? Does Java have any benefits that these two lack? I'm probably ignorant here. I haven't coded in Java for 5+ years.
- pjmlp 6y agoIndeed, had it not been for Oracle's work and Java would have been stuck at version 6, Maxime would never been made into GraalVM, all AOT compilers for Java would still be only available via commercial JDK, (almost) zero pause GC with support for TB heaps, JNI replacement, support for SIMD/AVX512, incoming support for value types and rewrite of C++ stuff into Java would never have happened. People like to talk and bash Oracle, but no one else, including Google bothered with Sun assets, and the community on their own would never made the improvements that Oracle has made in the last 15 years, if the way of Python and Ruby are any indication of how runtime improvements get made.
- vbezhenar 6y agoThere are plenty of Java APIs which won't ever be implemented on Android. For example AWT, Swing. That's why it should not be called Java at all. Sun sued Microsoft for J++ because their implementation was incomplete. Google got away with that. Java is more than language and few classes from the standard library.
- extropy 6y agoYou may be confusing Java language specification with the Java Platform programming API. Language spec has very limited set of packages generally in java.lang. https://docs.oracle.com/javase/specs/jls/se14/html/index.html https://docs.oracle.com/javase/specs/jls/se14/html/index.htm... Platform API is here https://docs.oracle.com/javase/10/docs/api/overview-summary.html https://docs.oracle.com/javase/10/docs/api/overview-summary....
- bitwize 6y agoAll the more reason why the Supreme Court should rule in favor of Oracle.
- umvi 6y agoWait, why? Won't that outcome turn FOSS into a legal quagmire? As now everyone will rush to copyright "common" API signatures, and lawsuit troll anyone found in violation of the copyright? "I see your FOSS uses `parse(string)`. We own the copyright on that API, please buy a license or we'll sue." So then every API would become i.e. `umvi_parse(string)` to avoid paying. I'm sure all sorts of auto-prefixer tools would pop up to help automate this, but still...
- zerocrates 6y agoIt probably wouldn't be that bad: there's already copyright doctrines for situations where something is so commonly used that it can't be protected, or where there's only one reasonable way to express a particular idea. Plus, copyright protection is usually not extended to extremely short phrases or snippets of text, so even in an "APIs are copyrightable" world, "parse(string)" is probably OK. (Of course, I only said probably, which is part of the problem.) The Oracle argument (and as things currently stand in their case, the accepted argument) is basically that the API taken as a whole can be protected even if each individual function name can't, so you could protect the "Java API" but not "compare(a, b)". The idea of copyright arising from "structure, sequence and organization" is well established in the computing context as well as others (for example, you can hold copyright in a compilation even if the individual things being compiled aren't themselves copyrightable). Still, API copyright would lead to all sorts of uncertainty at least at first, and certainly puts compatible implementations or reimplementations in the crosshairs, so I'd really prefer an Oracle loss here.
- _hl_ 6y ago> The Oracle argument (and as things currently stand in their case, the accepted argument) is basically that the API taken as a whole can be protected even if each individual function name can't And let's be honest, that does make some sense. We've all designed APIs that were particularly elegant and that we were proud of as something almost artistically beautiful. Surely APIs as a whole can constitute some kind of intellectual property. I'm not sure if copyright is the right way to protect APIs, mostly because copyright lasts for an absolute eternity in software engineering timeframes. But I do think that there ought to be some protection against others copying an API (unless you license it e.g. as open-source), although interfacing with an API should always be allowed.
- MattGaiser 6y agoHas the Android world moved to Kotlin then?
- voz_ 6y agoAnecdotal, but it seems to be on par with iOS Objc->Swift. New stuff is Kotlin, but unless you have a strong reason to rewrite, it stays ObjC.
- complexworld 6y agoA major difference is that there is a tool for automatically converting from Java to Kotlin. I don't think that exists for Objc to Swift.
- krrrh 6y agoThere is this, which can help get started. http://swiftify.com/ http://swiftify.com/
- V-2 6y agoThe code it generates leaves a lot to be desired. It's highly non-idiomatic, and has the marks of a computer-generated structure all over it. This being said, it certainly facilitates the transition from Java to Kotlin as it makes for a convenient learning tool (used on small portions of code).
- melling 6y agoThe transition to Swift has accelerated in the past year. Might be because of SwiftUI or because it’s now mature. https://www.tiobe.com/tiobe-index/ https://www.tiobe.com/tiobe-index/
- dep_b 6y agoABI stability. You don't need to ship the whole runtime with it anymore. Though if you want a framework that works nice with both languages and older versions Objective-C is still better.
- misotaur 6y agoCant wait for the snap to be updated.
- dep_b 6y agoI miss doing my designs visually, I used storyboards again for a demo app and getting the layout working for all screen sizes just worked once I got the layout right in interface builder. With coded constraints you need to do that change code / restart cycle, especially with more complex layouts and SwiftUI isn’t there yet. Those motion guides look like what Flash used to have, dearly missed.
- on_and_off 6y agoWe are going to have the exact same issue on Android :( Compose (Android's swift UI counterpart) also needs to be compiled to see how your change fare. Even with its preview feature, you need to compile your Compose tree to see how your change look. This new lib gets a lot of things right, but this one part is a big step back.
- nicetryguy 6y agoI don't miss many things about Flash / Actionscript but boy do i miss that development GUI. Sure, HTML 5 can do everything Flash can do but there is nothing even close to that envioronment for making interactive animation and full games.
- dgellow 6y ago> Clangd support for C++ That’s interesting, how common is it to write C++ for Android applications, and with Android Studio? I’m not that informed regarding android stuff but I understood that the native development kit wasn’t really that well maintained, making C++ an 2nd class citizen when compared to Java (and maybe Kotlin?). I would guess it’s mostly used for games?
- tarkin2 6y agoOpenCV, for example, uses C++ bindings. C/C++ binding are a nightmare in Android Development. This probably improves the situation.
- tick_tock_tick 6y agoC/C++ is only the only choice for cross platform business logic between windows/ios/android/macos.
- nicoburns 6y agoYou can also use Rust (and some big companies are - Cloudflare is shipping Rust on Android/iOS for their warp VPN, and Dropbox uses it in their desktop sync client (not sure if the same code is also used on mobile)).
- javajosh 6y agoVery interesting. Do you have any sources for people targeting Android with Rust?
- nicoburns 6y ago- https://github.com/cloudflare/boringtun https://github.com/cloudflare/boringtun - https://blog.cloudflare.com/warp-technical-challenges/ https://blog.cloudflare.com/warp-technical-challenges/ - https://www.reddit.com/r/rust/comments/8ygbvy/state_of_rust_for_iosandroid_on_2018/ https://www.reddit.com/r/rust/comments/8ygbvy/state_of_rust_... - https://medium.com/visly/rust-on-android-19f34a2fb43 https://medium.com/visly/rust-on-android-19f34a2fb43 - https://medium.com/visly/rust-on-ios-39f799b3c1dd https://medium.com/visly/rust-on-ios-39f799b3c1dd
- TuringNYC 6y agoWhat program did they use to do the SpeakerVideo-in-ScreenShare layout they used on the site (https://youtu.be/f1fHPqAYj5I?t=292 https://youtu.be/f1fHPqAYj5I?t=292)
- readams 6y agoLikely something like After Effects.
- capableweb 6y agoYou could do that in basically any video editor that supports multiple layers and masks. Blender is an open source (3D) editor where you can do this with. Most likely they are using one of/combination of: After Effects, Premiere Pro, DaVinci Resolve, iMovie and/or Final Cut Pro as those are the more standard tools in the industry.
- PunksATawnyFill 6y agoI'm curious: Why would you use Blender for this? I consider it a 3-D modeling tool, not a video editor. Then again, I just started using it. So far I'm pleasantly surprised at its UI. After using the detestable UI in GIMP (and the somewhat hokey-looking one in Audacity), I didn't expect much from open source.
- avhon1 6y agoI use Blender for video editng because I already know how to use it, I already have it installed on my computers, and because it has never been inadeqate. Blender doesn't have a ton of effects in the video editor itself, but you can replicate those effects in the 3D editor and in the node compositor.
- capableweb 6y ago> I'm curious: Why would you use Blender for this? I consider it a 3-D modeling tool, not a video editor. Because it has a nice video editor in it, that's useful for lots of things. Might be hard to get into if you never used Blender before. But if you've done 3D modelling in Blender, you'll be pleasantly surprised that your intuition of how to move, scale and generally edit stuff works the same in the video editor as in the rest of Blender.
- illuminated 6y agoThe very first thing that crossed my mind while reading about the motion editor was: "here comes the Google's 'Macromedia Flash' for mobile".
- anoncareer0212 6y agodoesn't make any sense, this is for adding animations to apps, not a proprietary format for distributing animated content
- illuminated 6y agoYeah, but the animation editing resembles of the same thing done in MM Flash. And I haven't seen that in many many years. That's where the thought came from, not anything else.
- PunksATawnyFill 6y agoIt does make sense. Flash was used to create a whole generation of shitty, animated UI. I wonder how many millions of man-hours were wasted waiting for pointless animations to finish so you could click a button or enter some text.
- pcx 6y ago1. The selected Java SDK API desugaring, though limited, is much awaited. Little things like supporting `java.time` up until API Level 14 make it less painful, don't have to end up using Joda Time even though it officially is not developed anymore. 2. Good to see Google focus on animations finally 3. The CPU profiler looks amazing The transition to androidx has been slow and painful. But overall Android dev experience is improving consistently
- carstenhag 6y agoMostly [source needed] people use(d) https://github.com/JakeWharton/ThreeTenABP https://github.com/JakeWharton/ThreeTenABP used for this.
- PunksATawnyFill 6y agoCan you cite some examples where UI animations aren't counterproductive, annoying, amateur-hour crap? Swiping screens away to convey a stacked hierarchy is useful, but beyond that I struggle to imagine what I'd do with them. There's a reason we hated Flash-based Web sites, and animation was a huge part of it. Now I'm considering which is worse: animated UI, or transparent UI. The asinine transparent-UI fad largely and deservedly died in the '00s, with the exception of Apple suddenly jumping on its discredited and defunct bandwagon years later. Don't see why we need to bring back animated UI either, but I'm happy to consider suggested uses. Speaking of stacked hierarchies, the rotatable 3-D display of views in a UI might be pretty useful. I like that idea.
- ajharrison 6y agoAs Apple is (trying) to move away from a behemoth Xcode, Google is moving closer to their version of it.
- agildehaus 6y agoHow is Apple moving away from XCode?
- Austin_Conlon 6y agoThe parent is maybe just thinking of a rumored iPadOS port.
- xenospn 6y agothey're not.
- krm01 6y agoI’m still amazed and somewhat annoyed by the filesize of Android Studio. And as you keep adding simulators and what not (which inevitably happens), before you know it, Android Studio occupies 20% of your entire disk space.
- Twiebie 6y agoSame thing goes for Xcode.
- Analemma_ 6y agoSame for Visual Studio (the full one, not VSCode). I think this just the nature of these giant IDEs that let you target multiple OS versions: if you want to faithfully target/simulate multiple operating systems, you need both the OS binaries and the platform libraries for each of them. As the saying goes, couple gigs here, a couple gigs there, and soon you're talking about real disk space.
- alkonaut 6y agoVS can be pretty small, but there are 1000's of optionals. My 2019 Enterprise with lots of boxes checked is 6Gb (in the program dir, it also has some runtimes etc outside.). Considering the last patch for just one of the games I play was 50+ Gb, it's pretty reasonable...
- vbezhenar 6y agoIf you'll carefully maintain your Android Studio installation, it's not that bad. People usually installing multiple SDKs, images which take quite a lot of space.
- kllrnohj 6y agoThe system images are the big ones. The SDK + sources for a given platform isn't that big, like ~100MB. The system image + saved emulator state is easily ~2-5GB though.
- matchbok 6y agoDid they build a real simulator yet, like iOS? Note, not an emulator, which does hardware stuff. A simulator, so we don't have to use up our entire machine to run another operating system just to run a java app. Or finally fix the activities and fragment mess?
- oakesm9 6y agoThat works for iOS because it shares so much with macOS. It wouldn't work for Android as it doesn't share much with the OS.
- e12e 6y agoThis is probably why wine doesn't exist, too. /s ;)
- kelnos 6y agoYes, and wine has been under development for 27 years and, despite its achievements, still can't run all Windows apps. (Regardless, reimplementing Windows APIs without documentation and writing a simulator for a phone OS are two completely different endeavors.)
- vbezhenar 6y agoI think that emulator is vastly superior option as it uses real Android running exactly the same code as your phone. I never had any issues with performance (with hardware acceleration). May be on extremely weak laptops it might cause issues, but Android Studio probably will be unusable there at all.
- benibela 6y agoI also need an emulator, because I have native binaries Unfortunately, there is only an aarch64 emulator for Android 7, which does not start on my system
- 6y ago
- trashburger 6y ago3D layout reminds me of Firefox's 3D view, which I sorely miss. Wish they brought it back, but it seems unlikely.
- _ZeD_ 6y agoI never understood why they remove it
- javajosh 6y agoIt's really interesting to me that, in the end, we build interactive screens. Consider all the complexity it takes to build one of those for Android (or iOS), and what it takes to make a a screen for the browser. One requires a whole stack of big, complicated, brittle tools. The other can be achieved in a single html file.
- Yuioup 6y agoYou forget that web browsers are very complex programs running on operating systems which in turn also are complex programs. If you can boot an entire operating system with a single html file, THAT would be impressive.
- londons_explore 6y agoIt really depends where you want to draw the line between the code which is part of the "OS" and the part that is the "app". The web platform puts as much as possible into the "OS", while android has far less, so the app has to include much more.
- g_p 6y agoI'm not a defender of the "modern web" recursive dependencies approach to building js sites, but the one thing the web platform seems to do better than Android is let the developer focus more onto their own logic, rather than reimplementing basic boilerplate activities. Sadly I've never really found a "one layer higher" overlay for the Android APIs to let developers take advantage of good boilerplates by default - I'd rather not pretend I'll implement data loading from an array or db into a scroll view better than someone else that has thought it through and understands the platform, because I know I won't!
- NicoJuicy 6y agoAn SDK is nothing more than dependencies bundled for a specific version.
- 6y ago
- deussum 6y agoLots of improvements for the Gradle plugin, but no mention of Bazel?
- tomlu 6y agoMe and my team made that plugin. It initially came from the same org that makes Bazel (rather than the other way around), but I think there's now a small team in the Android org that support it. Nevertheless, Gradle is currently much more popular than Bazel for Android development so it makes sense that this is where the focus is.
- mwcampbell 6y agoDo you know if any real, non-trivial Android apps are being built using only Bazel?
- tomlu 6y agoThe majority of all Android apps produced by Google are, and I have worked on one myself.
- rraghur 6y agois there hw virtualization on amd processors yet?
- lfy_google 6y agoYes, you can use the new AMD Hypervisor or use Hyper-V/WHPX, depending on your needs: https://developer.android.com/studio/run/emulator-acceleration#choose-windows-hypervisor https://developer.android.com/studio/run/emulator-accelerati... (Edit: On Linux, KVM for AMD should work already; this advice is for Windows hosts only)
- dirtylowprofile 6y agoAndroid Studio is 1.28Gb memory right now on my MBP. I bet this is normal and is way more memory hog than the previous version.
- tjbiddle 6y agoI haven't touched Android development in... Maybe 7 years? And even then, wasn't really in the trenches. I have to imagine boat loads have changed since then. If I wanted to poke around with some hobby projects, where would be the best place to start from scratch with all the best practices and development tools?
- on_and_off 6y agoDownload Android Studio, read the kotlin koans (assuming you are not familiar with kotlin), they are the best way to get used to that language if you know java, and kotlin is much more pleasant to use than java Best practices and tools might be harder, a LOT has changed in the past 7 years. Maybe https://github.com/ZacSweers/CatchUp https://github.com/ZacSweers/CatchUp as a sample ? After that, it depends whether your hobby is to write an android app, or if the resulting product is hobby. if it is the former, Compose is lots of fun and will be a big leap in android development. You can already use the dev version. MVI has also deeply changed how I code Android apps. Again, maybe not needed for the level of complexity of an hobby app unless you want to toy with something different.
- scns 6y agoWhat is MVI?
- sdiw 6y agoModel-View-Intent, I guess.
- lubonay 6y agoMVI stands for Model-View-Intent. It's a state management pattern that uses unidirectional flow. Basically you send events (Intents, similar to Redux actions, not to be confused with the Android Intent class..) to your Model, which does a state update and sends out the updated state to the View.
- scns 6y ago
- locusm 6y agoWhat's the impact for Flutter devs?
- tomerbd 6y agoIs android studio same as having IntelliJ ultimate with android plugins? Is it a form of the community edition? Will I miss features getting into IntelliJ because it's a fork?
- kllrnohj 6y agoAndroid Studio has C++ & JNI support which IntelliJ Ultimate doesn't (you have to use Jetbrain's CLion instead for that), which is insanity. In terms of Android features Android Studio is more than just the android plugins, but if you like the latter then go for it?
- habosa 6y agoThe new layout tools look great, I'm excited to try them. Especially the revamped Layout Inspector. Also I noticed that the final 3.x minor release was much faster on my Mac than any of the others before it. I hope 4.0 keeps or improves the performance.