Transcript from the "Introduction" Lesson
>> Welcome to Introduction to Kotlin and Android App Development. My name is Maximiliano Firtman, I can go by Max. I know it's a long name. And we have a full day creating an app on Android. So we're going to learn Kotlin and also a little bit about Android app development.
[00:00:37] So that's of course before the Android existed. So I did the Java on Nokia devices, CNBM, Blackberries and many other of these old phones. And then I have started doing iOS applications and of course, Android applications. So I've been doing that for a lot. I'm from Argentina, I'm actually living there in Buenos Aires.
[00:00:59] In terms of my Android experience, I have published around 20 apps mostly for customers, so not on my name. So I've been doing consulting and creating apps for those companies. I have started doing Android specific Java development in 2012, so ten years ago. So on Kotlin, when actually first started in the market, maybe a few months after that in 2019.
[00:01:25] That's all that I have for you at this point in terms of who I am, it's time to start. So we're going to cover today, the basics of Kotlin. Kotlin by the way, it's the language that we're going to use. It's kind of a new language compare with other languages that we have in the market.
[00:01:46] It appear in the past five years, and they go into the Android Studio. In fact, one of their requirements for the workshop is for you to install Android Studio. So you can go and do that right now. It's a free tool available for Windows, Mac, and Linux. So we're going to see how to test and debug our Android applications.
[00:02:06] You don't need a phone or a tablet. So if you don't have an Android phone, it's okay. We will be able to use the emulators as well. We are going to design our app with a framework, a library, known as JetPack Compose. It's actually a new UI framework and new UI toolkit from the Android team.
[00:02:28] So it's actually one of the official ways that we have to create Android applications. So we are going to see how to navigate between screens using this framework, how to work with data, cloud integrated data model, and how to connect with web services. So we have a website, we are going to download some data from there.
[00:03:26] Where you have some, let's say SVG files, PNG files, and some other files that we are going to use later in our app, okay? So the assets folder. And in terms of your experience, if you have experience with any OOP language, so object oriented programming language, you're okay.
[00:04:05] And today when you're doing frontend, you have two main universes. You can make a native clients or you can make web apps, websites or PWA Progressive Web Apps. Today, we're going to focus on native clients. So we are going to create a native client for a platform. When you decide to go with native clients today, you can pick using official SDKs from each platform or cross platform SDKs.
[00:04:34] And today, we will focus on official SDKs. Here, there are many platforms, there are more than three but just the main three ones, Android, Apple, Platforms on Windows. Today we will focus on Android, you know that. And then, here on the Android official SDK world, you can pick today different languages that you can use.
[00:04:55] You can use Java, Kotlin, or C and C++. And today, we will be focusing on Kotlin. Actually, most of the apps that are leading today or starting today are using Kotlin, okay? So of course you can also mix, within one particular project, you can have some parts in Java, some parts in Kotlin, and some parts in Z, okay?
[00:05:21] So you can actually mix all these technologies in the same project, but we will be focused in Kotlin. And in terms of the user interface, even if you pick Kotlin, you have several ways to design your application in terms of how you build the user interface. We have that something that has, it's actually unnamed, so we don't have a name for that.
[00:05:43] But typically it's known as a classic XML user interface. So Android development from the beginning was actually heavily based in XML files, layout files. That's the classic XML system. We have XML with JetPack, that's something that appeared in the past few years also because that classic XML system was sometimes a little problematic.
[00:06:07] So the Android team created a set of libraries on that JetPack to help with that. And then we have JetPack Compose that is actually that under that JetPack umbrella, but it's something completely new. There are no XML files here. So today, we're going to be focusing there on JetPack Compose.
[00:06:28] That is kind of the, I don't wanna say the current way to do Android apps because it's up to you if you want to use them. It's still new, it's still a new UI target. So not every app today is actually using it. But it's becoming stable enough to start working with it.
[00:06:47] And some companies are starting using it to create their own apps. And fortunately for us, JetPack Compose compared with the other UI toolkits, it's actually simpler. And let us make an app in one day. Before JetPack Compose, I will say that it was kind of impossible to actually learn Kotlin and how to actually build an app in just one day.
[00:07:12] So that's our route, that's our map, okay? So Kotlin, Android, JetPack Compose, those are the three main topics that we are going to cover today. So we are going to be building one app, it's called Coffee Masters. The idea of the app is that, we have a coffee shop, okay?
[00:07:32] For frontend masters. And we are going to make the app so you can actually see the menu, and you can order from there. That's kind of the main deal of the app, okay? So we are going to build this app from scratch. So in the repository, you have the steps, step by step.
[00:07:50] But I'm going to be building that manually directly in Android Studio. So we're going to learn also how to use Android Studio and how that works. So it's for a coffee store, we're going to use JetPack Compose. And another important decision that we need to make, but actually I already made that decision.
[00:08:08] Is that in terms of the user interface today, you can decide to create your own UI, your own design, or you can use the design pattern from the OS, okay? For example, if you take TikTok, the TikTok application is actually the same on iOS, on Android, and even on the web.
[00:08:30] So they have their own TikTok user interface, their own custom user interface. They're not following directly the guidelines from each OS. We're going to use Material Design. Material Design is a set of best practices and even some controls, some UI components that we can use on Android. It's open source and you can actually use it on the web, material design, and also on iOS if you want.
[00:08:58] But we are going to be using some of the ideas and guidelines from the material design system. And as I mentioned before, for the project, you will need to download the assets that are actually in the repository, okay? Because we have the icons, some images, some logos that we are going to use.
[00:09:19] So we have a question on the chat regarding picking frameworks like this that are like official framework versus cross-platform development such as Xamarin or React Native. So which one to use? I think that there is no single answer. I think that it depends on the project. So there are projects that are suitable for cross platform solutions, such as Fluter, React Native, Native Script, Microsoft, Xamarin.
[00:09:45] And for other projects, it's maybe a better idea to use Native SDKS. Or let's say official SDKs from the publisher, such as JetPack Compose on Android or Swift UI on iOS. So there are advantages and challenges on every decision you make. But I don't think there is a single answer when someone asked me, are you using always these or always that?
[00:10:13] My answer, it typically depends on the app. Because there are some apps that when you get into the cross-platform idea, you are getting to trouble or lot of effort. And for some app, it's pretty good. So I think it depends on the app and there are so many variables in that decision that it's difficult to give you a straight answer, okay?
[00:10:38] Which one is better. So it depends on the case, and the good thing about learning these things is that okay, you can see these yourself or by yourself and then make your decision on every project on which one do you think fits better.