#spring boot async method
Explore tagged Tumblr posts
learning-code-ficusoft · 4 months ago
Text
A Guide to Creating APIs for Web Applications
Tumblr media
APIs (Application Programming Interfaces) are the backbone of modern web applications, enabling communication between frontend and backend systems, third-party services, and databases. In this guide, we’ll explore how to create APIs, best practices, and tools to use.
1. Understanding APIs in Web Applications
An API allows different software applications to communicate using defined rules. Web APIs specifically enable interaction between a client (frontend) and a server (backend) using protocols like REST, GraphQL, or gRPC.
Types of APIs
RESTful APIs — Uses HTTP methods (GET, POST, PUT, DELETE) to perform operations on resources.
GraphQL APIs — Allows clients to request only the data they need, reducing over-fetching.
gRPC APIs — Uses protocol buffers for high-performance communication, suitable for microservices.
2. Setting Up a REST API: Step-by-Step
Step 1: Choose a Framework
Node.js (Express.js) — Lightweight and popular for JavaScript applications.
Python (Flask/Django) — Flask is simple, while Django provides built-in features.
Java (Spring Boot) — Enterprise-level framework for Java-based APIs.
Step 2: Create a Basic API
Here’s an example of a simple REST API using Express.js (Node.js):javascriptconst express = require('express'); const app = express(); app.use(express.json());let users = [{ id: 1, name: "John Doe" }];app.get('/users', (req, res) => { res.json(users); });app.post('/users', (req, res) => { const user = { id: users.length + 1, name: req.body.name }; users.push(user); res.status(201).json(user); });app.listen(3000, () => console.log('API running on port 3000'));
Step 3: Connect to a Database
APIs often need a database to store and retrieve data. Popular databases include:
SQL Databases (PostgreSQL, MySQL) — Structured data storage.
NoSQL Databases (MongoDB, Firebase) — Unstructured or flexible data storage.
Example of integrating MongoDB using Mongoose in Node.js:javascriptconst mongoose = require('mongoose'); mongoose.connect('mongodb://localhost:27017/mydb', { useNewUrlParser: true, useUnifiedTopology: true });const UserSchema = new mongoose.Schema({ name: String }); const User = mongoose.model('User', UserSchema);app.post('/users', async (req, res) => { const user = new User({ name: req.body.name }); await user.save(); res.status(201).json(user); });
3. Best Practices for API Development
🔹 Use Proper HTTP Methods:
GET – Retrieve data
POST – Create new data
PUT/PATCH – Update existing data
DELETE – Remove data
🔹 Implement Authentication & Authorization
Use JWT (JSON Web Token) or OAuth for securing APIs.
Example of JWT authentication in Express.js:
javascript
const jwt = require('jsonwebtoken'); const token = jwt.sign({ userId: 1 }, 'secretKey', { expiresIn: '1h' });
🔹 Handle Errors Gracefully
Return appropriate status codes (400 for bad requests, 404 for not found, 500 for server errors).
Example:
javascript
app.use((err, req, res, next) => { res.status(500).json({ error: err.message }); });
🔹 Use API Documentation Tools
Swagger or Postman to document and test APIs.
4. Deploying Your API
Once your API is built, deploy it using:
Cloud Platforms: AWS (Lambda, EC2), Google Cloud, Azure.
Serverless Functions: AWS Lambda, Vercel, Firebase Functions.
Containerization: Deploy APIs using Docker and Kubernetes.
Example: Deploying with DockerdockerfileFROM node:14 WORKDIR /app COPY package.json ./ RUN npm install COPY . . CMD ["node", "server.js"] EXPOSE 3000
5. API Testing and Monitoring
Use Postman or Insomnia for testing API requests.
Monitor API Performance with tools like Prometheus, New Relic, or Datadog.
Final Thoughts
Creating APIs for web applications involves careful planning, development, and deployment. Following best practices ensures security, scalability, and efficiency.
WEBSITE: https://www.ficusoft.in/python-training-in-chennai/
0 notes
jprie · 6 months ago
Text
Full Stack Developer Roadmap: Skills, Tools, and Best Practices
Creating a Full Stack Developer Roadmap involves mapping out the essential skills, tools, and best practices required to become proficient in both front-end and back-end development. Here's a comprehensive guide to help you understand the various stages in the journey to becoming a Full Stack Developer:
1. Fundamentals of Web Development
Before diving into full-stack development, it's essential to understand the core building blocks of web development:
1.1. HTML/CSS
HTML: The markup language used for creating the structure of web pages.
CSS: Used for styling the visual presentation of web pages (layouts, colors, fonts, etc.).
Best Practices: Write semantic HTML, use CSS preprocessors like Sass, and ensure responsive design with media queries.
1.2. JavaScript
JavaScript (JS): The programming language that adds interactivity to web pages.
Best Practices: Use ES6+ syntax, write clean and maintainable code, and implement asynchronous JavaScript (promises, async/await).
2. Front-End Development
The front end is what users see and interact with. A full-stack developer needs to master front-end technologies.
2.1. Front-End Libraries & Frameworks
React.js: A popular library for building user interfaces, focusing on reusability and performance.
Vue.js: A progressive JavaScript framework for building UIs.
Angular: A platform and framework for building single-page client applications.
Best Practices: Use state management tools (like Redux or Vuex), focus on component-based architecture, and optimize performance.
2.2. Version Control (Git)
Git: Essential for tracking changes and collaborating with others.
GitHub/GitLab/Bitbucket: Platforms for hosting Git repositories.
Best Practices: Commit often with meaningful messages, use branching strategies (like GitFlow), and create pull requests for review.
3. Back-End Development
The back end handles the data processing, storage, and logic behind the scenes. A full-stack developer must be proficient in server-side development.
3.1. Server-Side Languages
Node.js: JavaScript runtime for server-side development.
Python (Django/Flask): Python frameworks used for building web applications.
Ruby (Rails): A full-stack framework for Ruby developers.
PHP: Widely used for server-side scripting.
Java (Spring Boot): A powerful framework for building web applications in Java.
3.2. Databases
SQL Databases (e.g., PostgreSQL, MySQL): Used for relational data storage.
NoSQL Databases (e.g., MongoDB, Firebase): For non-relational data storage.
Best Practices: Design scalable and efficient databases, normalize data for SQL, use indexing and query optimization.
4. Web Development Tools & Best Practices
4.1. API Development and Integration
REST APIs: Learn how to create and consume RESTful APIs.
GraphQL: A query language for APIs, providing a more flexible and efficient way to retrieve data.
Best Practices: Design APIs with scalability in mind, use proper status codes, and document APIs with tools like Swagger.
4.2. Authentication & Authorization
JWT (JSON Web Tokens): A popular method for handling user authentication in modern web applications.
OAuth: Open standard for access delegation commonly used for logging in with third-party services.
Best Practices: Implement proper encryption, use HTTPS, and ensure token expiration.
4.3. Testing
Unit Testing: Testing individual components of the application.
Integration Testing: Testing how different components of the system work together.
End-to-End (E2E) Testing: Testing the entire application workflow.
Best Practices: Use testing libraries like Jest (JavaScript), Mocha, or PyTest (Python) and ensure high test coverage.
4.4. DevOps & Deployment
Docker: Containerization of applications for consistency across environments.
CI/CD Pipelines: Automating the process of building, testing, and deploying code.
Cloud Platforms: AWS, Azure, Google Cloud, etc., for deploying applications.
Best Practices: Use version-controlled deployment pipelines, monitor applications in production, and practice continuous integration.
4.5. Performance Optimization
Caching: Use caching strategies (e.g., Redis) to reduce server load and speed up response times.
Lazy Loading: Load parts of the application only when needed to reduce initial loading time.
Minification and Bundling: Minimize JavaScript and CSS files to improve load time.
5. Soft Skills & Best Practices
Being a full-stack developer also requires strong problem-solving skills and an ability to work collaboratively in teams.
5.1. Communication
Communicate effectively with team members, clients, and stakeholders, especially regarding technical requirements and issues.
5.2. Agile Development
Understand Agile methodologies (Scrum, Kanban) and work in sprints to deliver features incrementally.
5.3. Code Reviews & Collaboration
Regular code reviews help maintain code quality and foster learning within teams.
Practice pair programming and collaborative development.
6. Continuous Learning
The tech industry is always evolving, so it’s essential to stay up to date with new tools, languages, and frameworks.
Follow Blogs & Podcasts: Stay updated with the latest in full-stack development.
Contribute to Open Source: Engage with the developer community by contributing to open-source projects.
Build Side Projects: Continuously apply what you've learned by working on personal projects.
7. Additional Tools & Technologies
Webpack: A module bundler to optimize the workflow.
GraphQL: For efficient data fetching from APIs.
WebSockets: For real-time communication in web applications.
Conclusion
Becoming a proficient full-stack developer requires a combination of technical skills, tools, and a strong understanding of best practices. By mastering both front-end and back-end technologies, keeping up with industry trends, and continuously learning, you'll be equipped to build modern, scalable web applications.
Fullstack course in chennai
Fullstack development course in chennai
Fullstack training in chennai
Tumblr media
0 notes
vatt-world · 5 years ago
Text
hi
java stringbuilder vs concatenation - Google Search www.google.com How Spring Boot Application Work Internally | Example | Java Techie - YouTube www.youtube.com create thread in java - Google Search www.google.com Oct 16, 2020 deadlock in java - Google Search www.google.com race condition in java - Google Search www.google.com Static Keyword in Java | Static Block, Variable, Method & Class | Edureka www.edureka.co thread in java - Google Search www.google.com polymorphism in java - Google Search www.google.com Spring - Bean Life Cycle - Tutorialspoint www.tutorialspoint.com Event Handling in Spring - Tutorialspoint www.tutorialspoint.com Spring - JDBC Framework Overview - Tutorialspoint www.tutorialspoint.com Spring Boot with Hibernate | Baeldung www.baeldung.com Oct 16, 2020 Spring Boot - OAuth2 with JWT - Tutorialspoint www.tutorialspoint.com Oct 16, 2020 Spring Boot - Batch Service - Tutorialspoint www.tutorialspoint.com Spring - Transaction Management - Tutorialspoint www.tutorialspoint.com Oct 16, 2020 jdbctemplate in spring boot - Google Search www.google.com Oct 16, 2020 spring beanfactory - Google Search www.google.com Oct 16, 2020 spring aop - Google Search www.google.com Oct 16, 2020 spring initializr - Google Search www.google.com Oct 16, 2020 spring boot acutator - Google Search www.google.com Spring - Beans Auto-Wiring - Tutorialspoint www.tutorialspoint.com Spring - Dependency Injection - Tutorialspoint www.tutorialspoint.com Spring - Bean Scopes - Tutorialspoint www.tutorialspoint.com 6, 2020 Spring @Async rest controller example - Spring @EnableAsync howtodoinjava.com Spring Dependency Injection | Baeldung www.baeldung.com 4:12 PM static in java - Google Search www.google.com 4:12 PM Static Keyword in Java | Static Block, Variable, Method & Class | Edureka www.edureka.co 4:12 PM Static Keyword in Java | Static Block, Variable, Method & Class | Edureka www.edureka.co 4:11 PM stream java - Google Search www.google.com 4:11 PM Stream In Java - GeeksforGeeks www.geeksforgeeks.org 4:08 PM final vs finally vs finalize - Google Search www.google.com 4:07 PM java stringbuilder vs concatenation - Google Search www.google.com 4:10 PM default method in interface - Google Search www.google.com 4:10 PM Interface Default Methods in Java 8 - DZone Java dzone.com 4:09 PM functional interface - Google Search www.google.com Spring Boot Actuator: Production-ready Features docs.spring.io 4:14 PM spring boot starter project - Google Search www.google.com 4:14 PM spring boot starter project - Google Search www.google.com 4:13 PM springboot starter java - Google Search www.google.com 4:13 PM springboot java - Google Search www.google.com 4:13 PM scope spring - Google Search www.google.com 4:13 PM Spring - Bean Scopes - Tutorialspoint www.tutorialspoint.com 4:12 PM Core Technologies docs.spring.io 4:12 PM Spring Dependency Injection | Baeldung www.baeldung.com 4:12 PM static in java - Google Search www.google.com 4:12 PM Static Keyword in Java | Static Block, Variable, Method & Class | Edureka www.edureka.co 4:12 PM Static Keyword in Java | Static Block, Variable, Method & Class | Edureka www.edureka.co 4:11 PM stream java - Google Search www.google.com 4:11 PM Stream In Java - GeeksforGeeks www.geeksforgeeks.org 4:11 PM stream - Google Search www.google.com 4:10 PM default method in interface - Google Search www.google.com 4:10 PM Interface Default Methods in Java 8 - DZone Java dzone.com 4:09 PM functional interface - Google Search www.google.com 4:12 PM spring dependency injection - Google Search www.google.com m 4:19 PM spring responseentity - Google Search www.google.com 4:19 PM spring bean @ - Google Search www.google.com 4:19 PM spring bean - Google Search www.google.com 4:19 PM spring at tranactional - Google Search www.google.com 4:18 PM confiureee at tranactional - Google Search www.google.com 4:17 PM @component spring - Google Search www.google.com 4:17 PM dispatcher servlet - Google Search www.google.com 4:17 PM transaction management in spring - Google Search www.google.com 4:16 PM Spring - Tr
0 notes
t-baba · 5 years ago
Photo
Tumblr media
Angular 10, data grids, randomness, and checking some boxes
#494 — June 26, 2020
Unsubscribe  |  Read on the Web
JavaScript Weekly
Tumblr media
Lessons Learned Refactoring Optional Chaining Into a Large Codebase — Lea Verou, creator of Mavo, decided to refactor Mavo to use optional chaining (?.) and here’s some of what she discovered along the way. (As an aside, Lea was the subject of a neat 10 minute programming documentary recently – worth a watch!)
Lea Verou
A Little Bit of Plain JavaScript Can Do A Lot — For anyone more than happy to dive in and write JavaScript without dragging in an entire framework and tooling to manage it, there will be no surprises here, but this is a nice reminder otherwise. Do you always need a 'framework'? No.
Julia Evans
Creating a Voting App with Firestore and Wijmo — Learn how to build a realtime voting app quickly and easily with the Firestore database and Wijmo components. The app uses OAuth for authentication and allows users to submit and vote for ideas.
Wijmo by GrapeCity sponsor
Angular 10 Released — A major release for the popular Google-led framework, though smaller in scope than usual as Angular 9 only came out in February ;-) 10 gains a new date range picker, optional stricter settings, and an upgrade to TypeScript 3.9.
Stephen Fluin (Google)
What's Coming in TypeScript 4? — The first beta of TypeScript 4 is due any moment with a final release due in August. New bits and pieces include variadic tuple types, labelled tuples, short-cut assignment operators (e.g. ||=) and more.
Tim Perry
⚡️ Quick bytes:
Chrome 85's DevTools have gained better support for working with styles created by CSSOM APIs (such as by CSS-in-JS frameworks). There's also syntax autocompletion for optional chaining and highlighting for private fields.
There's nothing to see just yet, but NativeScript is coming to Ionic.
The creator of AlpineJS has written about how he's passed $100K/yr in income using GitHub Sponsors.
Did you know there's a Slack theme for VS Code? 😆
▶️ The JS Party podcast crew discusses how their use of JavaScript syntax evolves (or not) over time.
engineeringblogs.xyz is a new aggregator site (by us!) that brings together what 507 (so far) product and software engineering blogs are talking about. Worth a skim.
💻 Jobs
JavaScript Developer at X-Team (Remote) — Join X-Team and work on projects for companies like Riot Games, FOX, Coinbase, and more. Work from anywhere.
X-Team
Find a Job Through Vettery — Vettery specializes in tech roles and is completely free for job seekers. Create a profile to get started.
Vettery
📚 Tutorials, Opinions and Stories
ECMAScript Proposal: Private Static Methods and Accessors in Classes — Dr. Axel takes a look at another forthcoming language feature (in this case being at stage 3 and already supported by Babel and elsewhere).
Dr. Axel Rauschmayer
npm v7 Series: Why Keep package-lock.json? — If npm v7 is going to support yarn.lock files, then why keep package-lock.json around as well? Isaac goes into some depth as to how yarn.lock works and why it doesn’t quite suit every npm use case.
Isaac Z. Schlueter
How to Dynamically Get All CSS Custom Properties on a Page — Some fun DOM and stylesheet wrangling on display here.
Tyler Gaw
Stream Chat API & JavaScript SDK for Custom Chat Apps — Build real-time chat in less time. Rapidly ship in-app messaging with our highly reliable chat infrastructure.
Stream sponsor
Getting Started with Oak for Building HTTP Services in Deno — A comprehensive Oak with Deno tutorial for beginners (which, I guess, we all are when it comes to Deno). Oak is essentially the most popular option for building HTTP-based apps in Deno right now.
Robin Wieruch
Understanding Generators in JavaScript — Generator functions can be paused and resumed and yield multiple values over time and were introduced in ES6/ES2015.
Tania Rascia
Build a CRUD App with Vue.js, Spring Boot, and Kotlin — It’s a fact of life that not everyone is building apps with JavaScript at every level of the stack. Sometimes.. people use Java too 🤫
Andrew Hughes
▶  Creating a Basic Implemention of 'Subway Surfers' — No modules, webpack or such-like here.. just exploring the joy of throwing a game mechanic together quickly using rough and ready JavaScript. Love it.
Shawn Beaton
Rubber Duck Debugging for JavaScript Developers — When you’re stuck with something, why not talk to a rubber duck?
Valeri Karpov
🔧 Code & Tools
Tumblr media
Tabulator 4.7: An Interactive Table and Data Grid Library — Supports all major browsers and can be used with Angular, Vue, and React if you wish. 4.7 is a substantial release. Among other things is a new layout mode that resizes the table container to fit the data (example).
Oli Folkerd
Tragopan: A Minimal Dependency-Free Pan/Zoom Library — Try it out here. Claims to work faster due to use of native browser scrolling for panning (left/right/up/down) and transform/scale for zooming.
team.video
Builds Run Faster on Buildkite 🏃‍♀️ — Build times <5 mins at any scale. Self-hosted agents work with all languages, source control tools & platforms.
Buildkite sponsor
React Query 2: Hooks for Fetching, Caching and Updating Async Data — React Query is well worth checking out and has extensive documentation and even its own devtools. Main repo.
Tanner Linsley
Rando.js: A Helper for Making Randomness Easier — The rando function lets you get random integers in a range, floats in a range, pick between multiple items, return a random element from an array, and more. There’s also randosequence for a more shuffle-like experience.
nastyox
jinabox.js: A Customizable Omnibox for AI Powered Searching — Designed to be used with a Jina back-end. It’s all open source, but will take some digging around to understand fully.
Jina AI
MongoDB Is Easy. Now Make It Powerful. Free Download for 30 Days.
Studio 3T sponsor
IntersectionObserver Visualizer — If you’re new to using the IntersectionObserver API, this useful interactive demo might help you comprehend it a little better.
michelle barker
Polly.js 5.0: Record, Replay, and Stub HTTP Interactions
Netflix
Vest: Effortless Validations Inspired by Testing Frameworks — If you’re used to unit testing, the syntax used here will be familiar.
Evyatar
👻 Scary Item of the Week
Tumblr media
Checkboxland: Render 'Anything' as HTML Checkboxes — This frivolous experiment is equal parts terrifying and impressive. It’s a JS library that displays animations, text, and arbitrary data using nothing but HTML checkboxes and, to be fair, they’ve presented it really well!
Bryan Braun
by via JavaScript Weekly https://ift.tt/3g53MDU
0 notes
insiderandroidtk-blog · 8 years ago
Text
RxJava support 2.0 releases support for Android apps
The RxJava team has released version 2.0 of their reactive Java framework, after an 18 month development cycle. RxJava is part of the ReactiveX family of libraries and frameworks, which is in their words, "a combination of the best ideas from the Observer pattern, the Iterator pattern, and functional programming". The project's "What's different in 2.0" is a good guide for developers already familiar with RxJava 1.x.
RxJava 2.0 is a brand new implementation of RxJava. This release is based on the Reactive Streams specification, an initiative for providing a standard for asynchronous stream processing with non-blocking back pressure, targeting runtime environments (JVM and JavaScript) as well as network protocols.
Reactive implementations have concepts of publishers and subscribers, as well as ways to subscribe to data streams, get the next stream of data, handle errors and close the connection.
The Reactive Streams spec will be included in JDK 9 as java.util.concurrent.Flow. The following interfaces correspond to the Reactive Streams spec. As you can see, the spec is small, consisting of just four interfaces:
·         Flow.Processor<T,R>: A component that acts as both a Subscriber and Publisher.
·         Flow.Publisher<T>: A producer of items (and related control messages) received by Subscribers.
·         Flow.Subscriber<T>: A receiver of messages.
·         Flow.Subscription: Message control linking a Flow.Publisher and Flow.Subscriber.
Spring Framework 5 is also going reactive. To see how this looks, refer to Josh Long's Functional Reactive Endpoints with Spring Framework 5.0.
To learn more about RxJava 2.0, InfoQ interviewed main RxJava 2.0 contributor, David Karnok.
InfoQ: First of all, congrats on RxJava 2.0! 18 months in the making, that's quite a feat. What are you most proud of in this release?
David Karnok: Thanks! In some way, I wish it didn't take so long. There was a 10 month pause when Ben Christensen, the original author who started RxJava, left and there was no one at Netflix to push this forward. I'm sure many will contest that things got way better when I took over the lead role this June. I'm proud my research into more advanced and more performant Reactive Streams paid off and RxJava 2 is the proof all of it works.
InfoQ: What’s different in RxJava 2.0 and how does it help developers?
Karnok: There are a lot of differences between version 1 and 2 and it's impossible to list them all here ,but you can visit the dedicated wiki page for a comprehensible explanation. In headlines, we now support the de-facto standard Reactive Streams specification, have significant overhead reduction in many places, no longer allow nulls, have split types into two groups based on support of or lack of backpressure and have explicit interop between the base reactive types.
InfoQ: Where do you see RxJava used the most (e.g. IoT, real-time data processing, etc.)?
Karnok: RxJava is more dominantly used by the Android community, based on the feedback I saw. I believe the server side is dominated by Project Reactor and Akka at the moment. I haven't specifically seen IoT mentioned or use RxJava (it requires Java), but maybe they use some other reactive library available on their platform. For real-time data processing people still tend to use other solutions, most of them not really reactive, and I'm not aware of any providers (maybe Pivotal) who are pushing for reactive in this area.
InfoQ: What benefits does RxJava provide Android more than other environments that would explain the increased traction?
Karnok: As far as I see, Android wanted to "help" their users solving async and concurrent problems with Android-only tools such as AsyncTask, Looper/Handler etc.
Unfortunately, their design and use is quite inconvenient, often hard to understand or predict and generally brings frustration to Android developers. These can largely contribute to callback hell and the difficulty of keeping async operations off the main thread.
RxJava's design (inherited from the ReactiveX design of Microsoft) is dataflow-oriented and orthogonalized where actions execute from when data appears for processing. In addition, error handling and reporting is a key part of the flows. With AsyncTask, you had to manually work out the error delivery pattern and cancel pending tasks, whereas RxJava does that as part of its contract.
In practical terms, having a flow that queries several services in the background and then presents the results in the main thread can be expressed in a few lines with RxJava (+Retrofit) and a simple screen rotation will cancel the service calls promptly.
This is a huge productivity win for Android developers, and the simplicity helps them climb the steep learning curve the whole reactive programming's paradigm shift requires. Maybe at the end, RxJava is so attractive to Android because it reduces the "time-to-market" for individual developers, startups and small companies in the mobile app business.
There was nothing of a comparable issue on the desktop/server side Java, in my opinion, at that time. People learned to fire up ExecutorService's and wait on Future.get(), knew about SwingUtilities.invokeLater to send data back to the GUI thread and otherwise the Servlet API, which is one thread per request only (pre 3.0) naturally favored blocking APIs (database, service calls).
Desktop/server folks are more interested in the performance benefits a non-blocking design of their services offers (rather than how easy one can write a service). However, unlike Android development, having just RxJava is not enough and many expect/need complete frameworks to assist their business logic as there is no "proper" standard for non-blocking web services to replace the Servlet API. (Yes, there is Spring (~Boot) and Play but they feel a bit bandwagon-y to me at the moment).
InfoQ: HTTP is a synchronous protocol and can cause a lot of back pressure when using microservices. Streaming platforms like Akka and Apache Kafka help to solve this. Does RxJava 2.0 do anything to allow automatic back pressure?
Karnok: RxJava 2's Flowable type implements the Reactive Streams interface/specification and does support backpressure. However, the Java level backpressure is quite different from the network level backpressure. For us, backpressure means how many objects to deliver through the pipeline between different stages where these objects can be non uniform in type and size. On the network level one deals with usually fixed size packets, and backpressure manifests via the lack of acknowledgement of previously sent packets. In classical setup, the network backpressure manifests on the Java level as blocking calls that don't return until all pieces of data have been written. There are non-blocking setups, such as Netty, where the blocking is replaced by implicit buffering, and as far as I know there are only individual, non-uniform and non Reactive Streams compatible ways of handling those (i.e., a check for canWrite which one has to spin over/retry periodically). There exist libraries that try to bridge the two worlds (RxNetty, some Spring) with varying degrees of success as I see it.
InfoQ: Do you think reactive frameworks are necessary to handle large amounts of traffic and real-time data?
Karnok: It depends on the problem complexity. For example, if your task is to count the number of characters in a big-data source, there are faster and more dedicated ways of doing that. If your task is to compose results from services on top of a stream of incoming data in order to return something detailed, reactive-based solutions are quite adequate. As far as I know, most libraries and frameworks around Reactive Streams were designed for throughput and not really for latency. For example, in high-frequency trading, the predictable latency is very important and can be easily met by Aeron but not the main focus for RxJava due to the unpredictable latency behavior.
InfoQ: Does HTTP/2 help solve the scalability issues that HTTP/1.1 has?
Karnok: This is not related to RxJava and I personally haven't played with HTTP/2 but only read the spec. Multiplexing over the same channel is certainly a win in addition to the support for explicit backpressure (i.e., even if the network can deliver, the client may still be unable to process the data in that volume) per stream. I don't know all the technical details but I believe Spring Reactive Web does support HTTP/2 transport if available but they hide all the complexity behind reactive abstractions so you can express your processing pipeline in RxJava 2 and Reactor 3 terms if you wish.
InfoQ: Java 9 is projected to be featuring some reactive functionality. Is that a complete spec?
Karnok: No. Java 9 will only feature 4 Java interfaces with 7 methods total. No stream-like or Rx-like API on top of that nor any JDK features built on that.
InfoQ: Will that obviate the need for RxJava if it is built right into the JDK?
Karnok: No and I believe there's going to be more need for a true and proven library such as RxJava. Once the toolchains grow up to Java 9, we will certainly provide adapters and we may convert (or rewrite) RxJava 3 on top of Java 9's features (VarHandles).
One of my fears is that once Java 9 is out, many will try to write their own libraries (individuals, companies) and the "market" gets diluted with big branded-low quality solutions, not to mention the increased amount of "how does RxJava differ from X" questions.
My personal opinion is that this is already happening today around Reactive Streams where certain libraries and frameworks advertise themselves as RS but fail to deliver based on it. My (likely biased) conjecture is that RxJava 2 is the closest library/technology to an optimal Reactive Streams-based solution that can be.
InfoQ: What's next for RxJava?
Karnok: We had fantastic reviewers, such as Jake Wharton, during the development of RxJava 2. Unfortunately, the developer previews and release candidates didn't generate enough attention and despite our efforts, small problems and oversights slipped into the final release. I don't expect major issues in the coming months but we will keep fixing both version 1 and 2 as well as occasionally adding new operators to support our user base. A few companion libraries, such as RxAndroid, now provide RxJava 2 compatible versions, but the majority of the other libraries don't yet or haven't yet decided how to go forward. In terms of RxJava, I plan to retire RxJava 1 within six months (i.e., only bugfixes then on), partly due to the increasing maintenance burden on my "one man army" for some time now; partly to "encourage" the others to switch to the RxJava 2 ecosystem. As for RxJava 3, I don't have any concrete plans yet. There are ongoing discussions about splitting the library along types or along backpressure support as well as making the so-called operator-fusion elements (which give a significant boost to our performance) a standard extension of the Reactive Streams specification.
1 note · View note
androidtechtk-blog · 8 years ago
Text
RX JAVA 2.0 releases support for Android
The RxJava team has released version 2.0 of their reactive Java framework, after an 18 month development cycle. RxJava is part of the ReactiveX family of libraries and frameworks, which is in their words, "a combination of the best ideas from the Observer pattern, the Iterator pattern, and functional programming". The project's "What's different in 2.0" is a good guide for developers already familiar with RxJava 1.x.
RxJava 2.0 is a brand new implementation of RxJava. This release is based on the Reactive Streams specification, an initiative for providing a standard for asynchronous stream processing with non-blocking back pressure, targeting runtime environments (JVM and JavaScript) as well as network protocols.
Reactive implementations have concepts of publishers and subscribers, as well as ways to subscribe to data streams, get the next stream of data, handle errors and close the connection.
The Reactive Streams spec will be included in JDK 9 as java.util.concurrent.Flow. The following interfaces correspond to the Reactive Streams spec. As you can see, the spec is small, consisting of just four interfaces:
·         Flow.Processor<T,R>: A component that acts as both a Subscriber and Publisher.
·         Flow.Publisher<T>: A producer of items (and related control messages) received by Subscribers.
·         Flow.Subscriber<T>: A receiver of messages.
·         Flow.Subscription: Message control linking a Flow.Publisher and Flow.Subscriber.
Spring Framework 5 is also going reactive. To see how this looks, refer to Josh Long's Functional Reactive Endpoints with Spring Framework 5.0.
To learn more about RxJava 2.0, InfoQ interviewed main RxJava 2.0 contributor, David Karnok.
InfoQ: First of all, congrats on RxJava 2.0! 18 months in the making, that's quite a feat. What are you most proud of in this release?
David Karnok: Thanks! In some way, I wish it didn't take so long. There was a 10 month pause when Ben Christensen, the original author who started RxJava, left and there was no one at Netflix to push this forward. I'm sure many will contest that things got way better when I took over the lead role this June. I'm proud my research into more advanced and more performant Reactive Streams paid off and RxJava 2 is the proof all of it works.
InfoQ: What’s different in RxJava 2.0 and how does it help developers?
Karnok: There are a lot of differences between version 1 and 2 and it's impossible to list them all here ,but you can visit the dedicated wiki page for a comprehensible explanation. In headlines, we now support the de-facto standard Reactive Streams specification, have significant overhead reduction in many places, no longer allow nulls, have split types into two groups based on support of or lack of backpressure and have explicit interop between the base reactive types.
InfoQ: Where do you see RxJava used the most (e.g. IoT, real-time data processing, etc.)?
Karnok: RxJava is more dominantly used by the Android community, based on the feedback I saw. I believe the server side is dominated by Project Reactor and Akka at the moment. I haven't specifically seen IoT mentioned or use RxJava (it requires Java), but maybe they use some other reactive library available on their platform. For real-time data processing people still tend to use other solutions, most of them not really reactive, and I'm not aware of any providers (maybe Pivotal) who are pushing for reactive in this area.
InfoQ: What benefits does RxJava provide Android more than other environments that would explain the increased traction?
Karnok: As far as I see, Android wanted to "help" their users solving async and concurrent problems with Android-only tools such as AsyncTask, Looper/Handler etc.
Unfortunately, their design and use is quite inconvenient, often hard to understand or predict and generally brings frustration to Android developers. These can largely contribute to callback hell and the difficulty of keeping async operations off the main thread.
RxJava's design (inherited from the ReactiveX design of Microsoft) is dataflow-oriented and orthogonalized where actions execute from when data appears for processing. In addition, error handling and reporting is a key part of the flows. With AsyncTask, you had to manually work out the error delivery pattern and cancel pending tasks, whereas RxJava does that as part of its contract.
In practical terms, having a flow that queries several services in the background and then presents the results in the main thread can be expressed in a few lines with RxJava (+Retrofit) and a simple screen rotation will cancel the service calls promptly.
This is a huge productivity win for Android developers, and the simplicity helps them climb the steep learning curve the whole reactive programming's paradigm shift requires. Maybe at the end, RxJava is so attractive to Android because it reduces the "time-to-market" for individual developers, startups and small companies in the mobile app business.
There was nothing of a comparable issue on the desktop/server side Java, in my opinion, at that time. People learned to fire up ExecutorService's and wait on Future.get(), knew about SwingUtilities.invokeLater to send data back to the GUI thread and otherwise the Servlet API, which is one thread per request only (pre 3.0) naturally favored blocking APIs (database, service calls).
Desktop/server folks are more interested in the performance benefits a non-blocking design of their services offers (rather than how easy one can write a service). However, unlike Android development, having just RxJava is not enough and many expect/need complete frameworks to assist their business logic as there is no "proper" standard for non-blocking web services to replace the Servlet API. (Yes, there is Spring (~Boot) and Play but they feel a bit bandwagon-y to me at the moment).
InfoQ: HTTP is a synchronous protocol and can cause a lot of back pressure when using microservices. Streaming platforms like Akka and Apache Kafka help to solve this. Does RxJava 2.0 do anything to allow automatic back pressure?
Karnok: RxJava 2's Flowable type implements the Reactive Streams interface/specification and does support backpressure. However, the Java level backpressure is quite different from the network level backpressure. For us, backpressure means how many objects to deliver through the pipeline between different stages where these objects can be non uniform in type and size. On the network level one deals with usually fixed size packets, and backpressure manifests via the lack of acknowledgement of previously sent packets. In classical setup, the network backpressure manifests on the Java level as blocking calls that don't return until all pieces of data have been written. There are non-blocking setups, such as Netty, where the blocking is replaced by implicit buffering, and as far as I know there are only individual, non-uniform and non Reactive Streams compatible ways of handling those (i.e., a check for canWrite which one has to spin over/retry periodically). There exist libraries that try to bridge the two worlds (RxNetty, some Spring) with varying degrees of success as I see it.
InfoQ: Do you think reactive frameworks are necessary to handle large amounts of traffic and real-time data?
Karnok: It depends on the problem complexity. For example, if your task is to count the number of characters in a big-data source, there are faster and more dedicated ways of doing that. If your task is to compose results from services on top of a stream of incoming data in order to return something detailed, reactive-based solutions are quite adequate. As far as I know, most libraries and frameworks around Reactive Streams were designed for throughput and not really for latency. For example, in high-frequency trading, the predictable latency is very important and can be easily met by Aeron but not the main focus for RxJava due to the unpredictable latency behavior.
InfoQ: Does HTTP/2 help solve the scalability issues that HTTP/1.1 has?
Karnok: This is not related to RxJava and I personally haven't played with HTTP/2 but only read the spec. Multiplexing over the same channel is certainly a win in addition to the support for explicit backpressure (i.e., even if the network can deliver, the client may still be unable to process the data in that volume) per stream. I don't know all the technical details but I believe Spring Reactive Web does support HTTP/2 transport if available but they hide all the complexity behind reactive abstractions so you can express your processing pipeline in RxJava 2 and Reactor 3 terms if you wish.
InfoQ: Java 9 is projected to be featuring some reactive functionality. Is that a complete spec?
Karnok: No. Java 9 will only feature 4 Java interfaces with 7 methods total. No stream-like or Rx-like API on top of that nor any JDK features built on that.
InfoQ: Will that obviate the need for RxJava if it is built right into the JDK?
Karnok: No and I believe there's going to be more need for a true and proven library such as RxJava. Once the toolchains grow up to Java 9, we will certainly provide adapters and we may convert (or rewrite) RxJava 3 on top of Java 9's features (VarHandles).
One of my fears is that once Java 9 is out, many will try to write their own libraries (individuals, companies) and the "market" gets diluted with big branded-low quality solutions, not to mention the increased amount of "how does RxJava differ from X" questions.
My personal opinion is that this is already happening today around Reactive Streams where certain libraries and frameworks advertise themselves as RS but fail to deliver based on it. My (likely biased) conjecture is that RxJava 2 is the closest library/technology to an optimal Reactive Streams-based solution that can be.
InfoQ: What's next for RxJava?
Karnok: We had fantastic reviewers, such as Jake Wharton, during the development of RxJava 2. Unfortunately, the developer previews and release candidates didn't generate enough attention and despite our efforts, small problems and oversights slipped into the final release. I don't expect major issues in the coming months but we will keep fixing both version 1 and 2 as well as occasionally adding new operators to support our user base. A few companion libraries, such as RxAndroid, now provide RxJava 2 compatible versions, but the majority of the other libraries don't yet or haven't yet decided how to go forward. In terms of RxJava, I plan to retire RxJava 1 within six months (i.e., only bugfixes then on), partly due to the increasing maintenance burden on my "one man army" for some time now; partly to "encourage" the others to switch to the RxJava 2 ecosystem. As for RxJava 3, I don't have any concrete plans yet. There are ongoing discussions about splitting the library along types or along backpressure support as well as making the so-called operator-fusion elements (which give a significant boost to our performance) a standard extension of the Reactive Streams specification.
0 notes
latestdroidtk-blog · 8 years ago
Text
The RxJava team has released version 2.0 of their reactive Java framework
The RxJava team has released version 2.0 of their reactive Java framework, after an 18 month development cycle. RxJava is part of the ReactiveX family of libraries and frameworks, which is in their words, "a combination of the best ideas from the Observer pattern, the Iterator pattern, and functional programming". The project's "What's different in 2.0" is a good guide for developers already familiar with RxJava 1.x.
RxJava 2.0 is a brand new implementation of RxJava. This release is based on the Reactive Streams specification, an initiative for providing a standard for asynchronous stream processing with non-blocking back pressure, targeting runtime environments (JVM and JavaScript) as well as network protocols.
Reactive implementations have concepts of publishers and subscribers, as well as ways to subscribe to data streams, get the next stream of data, handle errors and close the connection.
The Reactive Streams spec will be included in JDK 9 as java.util.concurrent.Flow. The following interfaces correspond to the Reactive Streams spec. As you can see, the spec is small, consisting of just four interfaces:
·         Flow.Processor<T,R>: A component that acts as both a Subscriber and Publisher.
·         Flow.Publisher<T>: A producer of items (and related control messages) received by Subscribers.
·         Flow.Subscriber<T>: A receiver of messages.
·         Flow.Subscription: Message control linking a Flow.Publisher and Flow.Subscriber.
Spring Framework 5 is also going reactive. To see how this looks, refer to Josh Long's Functional Reactive Endpoints with Spring Framework 5.0.
To learn more about RxJava 2.0, InfoQ interviewed main RxJava 2.0 contributor, David Karnok.
InfoQ: First of all, congrats on RxJava 2.0! 18 months in the making, that's quite a feat. What are you most proud of in this release?
David Karnok: Thanks! In some way, I wish it didn't take so long. There was a 10 month pause when Ben Christensen, the original author who started RxJava, left and there was no one at Netflix to push this forward. I'm sure many will contest that things got way better when I took over the lead role this June. I'm proud my research into more advanced and more performant Reactive Streams paid off and RxJava 2 is the proof all of it works.
InfoQ: What’s different in RxJava 2.0 and how does it help developers?
Karnok: There are a lot of differences between version 1 and 2 and it's impossible to list them all here ,but you can visit the dedicated wiki page for a comprehensible explanation. In headlines, we now support the de-facto standard Reactive Streams specification, have significant overhead reduction in many places, no longer allow nulls, have split types into two groups based on support of or lack of backpressure and have explicit interop between the base reactive types.
InfoQ: Where do you see RxJava used the most (e.g. IoT, real-time data processing, etc.)?
Karnok: RxJava is more dominantly used by the Android community, based on the feedback I saw. I believe the server side is dominated by Project Reactor and Akka at the moment. I haven't specifically seen IoT mentioned or use RxJava (it requires Java), but maybe they use some other reactive library available on their platform. For real-time data processing people still tend to use other solutions, most of them not really reactive, and I'm not aware of any providers (maybe Pivotal) who are pushing for reactive in this area.
InfoQ: What benefits does RxJava provide Android more than other environments that would explain the increased traction?
Karnok: As far as I see, Android wanted to "help" their users solving async and concurrent problems with Android-only tools such as AsyncTask, Looper/Handler etc.
Unfortunately, their design and use is quite inconvenient, often hard to understand or predict and generally brings frustration to Android developers. These can largely contribute to callback hell and the difficulty of keeping async operations off the main thread.
RxJava's design (inherited from the ReactiveX design of Microsoft) is dataflow-oriented and orthogonalized where actions execute from when data appears for processing. In addition, error handling and reporting is a key part of the flows. With AsyncTask, you had to manually work out the error delivery pattern and cancel pending tasks, whereas RxJava does that as part of its contract.
In practical terms, having a flow that queries several services in the background and then presents the results in the main thread can be expressed in a few lines with RxJava (+Retrofit) and a simple screen rotation will cancel the service calls promptly.
This is a huge productivity win for Android developers, and the simplicity helps them climb the steep learning curve the whole reactive programming's paradigm shift requires. Maybe at the end, RxJava is so attractive to Android because it reduces the "time-to-market" for individual developers, startups and small companies in the mobile app business.
There was nothing of a comparable issue on the desktop/server side Java, in my opinion, at that time. People learned to fire up ExecutorService's and wait on Future.get(), knew about SwingUtilities.invokeLater to send data back to the GUI thread and otherwise the Servlet API, which is one thread per request only (pre 3.0) naturally favored blocking APIs (database, service calls).
Desktop/server folks are more interested in the performance benefits a non-blocking design of their services offers (rather than how easy one can write a service). However, unlike Android development, having just RxJava is not enough and many expect/need complete frameworks to assist their business logic as there is no "proper" standard for non-blocking web services to replace the Servlet API. (Yes, there is Spring (~Boot) and Play but they feel a bit bandwagon-y to me at the moment).
InfoQ: HTTP is a synchronous protocol and can cause a lot of back pressure when using microservices. Streaming platforms like Akka and Apache Kafka help to solve this. Does RxJava 2.0 do anything to allow automatic back pressure?
Karnok: RxJava 2's Flowable type implements the Reactive Streams interface/specification and does support backpressure. However, the Java level backpressure is quite different from the network level backpressure. For us, backpressure means how many objects to deliver through the pipeline between different stages where these objects can be non uniform in type and size. On the network level one deals with usually fixed size packets, and backpressure manifests via the lack of acknowledgement of previously sent packets. In classical setup, the network backpressure manifests on the Java level as blocking calls that don't return until all pieces of data have been written. There are non-blocking setups, such as Netty, where the blocking is replaced by implicit buffering, and as far as I know there are only individual, non-uniform and non Reactive Streams compatible ways of handling those (i.e., a check for canWrite which one has to spin over/retry periodically). There exist libraries that try to bridge the two worlds (RxNetty, some Spring) with varying degrees of success as I see it.
InfoQ: Do you think reactive frameworks are necessary to handle large amounts of traffic and real-time data?
Karnok: It depends on the problem complexity. For example, if your task is to count the number of characters in a big-data source, there are faster and more dedicated ways of doing that. If your task is to compose results from services on top of a stream of incoming data in order to return something detailed, reactive-based solutions are quite adequate. As far as I know, most libraries and frameworks around Reactive Streams were designed for throughput and not really for latency. For example, in high-frequency trading, the predictable latency is very important and can be easily met by Aeron but not the main focus for RxJava due to the unpredictable latency behavior.
InfoQ: Does HTTP/2 help solve the scalability issues that HTTP/1.1 has?
Karnok: This is not related to RxJava and I personally haven't played with HTTP/2 but only read the spec. Multiplexing over the same channel is certainly a win in addition to the support for explicit backpressure (i.e., even if the network can deliver, the client may still be unable to process the data in that volume) per stream. I don't know all the technical details but I believe Spring Reactive Web does support HTTP/2 transport if available but they hide all the complexity behind reactive abstractions so you can express your processing pipeline in RxJava 2 and Reactor 3 terms if you wish.
InfoQ: Java 9 is projected to be featuring some reactive functionality. Is that a complete spec?
Karnok: No. Java 9 will only feature 4 Java interfaces with 7 methods total. No stream-like or Rx-like API on top of that nor any JDK features built on that.
InfoQ: Will that obviate the need for RxJava if it is built right into the JDK?
Karnok: No and I believe there's going to be more need for a true and proven library such as RxJava. Once the toolchains grow up to Java 9, we will certainly provide adapters and we may convert (or rewrite) RxJava 3 on top of Java 9's features (VarHandles).
One of my fears is that once Java 9 is out, many will try to write their own libraries (individuals, companies) and the "market" gets diluted with big branded-low quality solutions, not to mention the increased amount of "how does RxJava differ from X" questions.
My personal opinion is that this is already happening today around Reactive Streams where certain libraries and frameworks advertise themselves as RS but fail to deliver based on it. My (likely biased) conjecture is that RxJava 2 is the closest library/technology to an optimal Reactive Streams-based solution that can be.
InfoQ: What's next for RxJava?
Karnok: We had fantastic reviewers, such as Jake Wharton, during the development of RxJava 2. Unfortunately, the developer previews and release candidates didn't generate enough attention and despite our efforts, small problems and oversights slipped into the final release. I don't expect major issues in the coming months but we will keep fixing both version 1 and 2 as well as occasionally adding new operators to support our user base. A few companion libraries, such as RxAndroid, now provide RxJava 2 compatible versions, but the majority of the other libraries don't yet or haven't yet decided how to go forward. In terms of RxJava, I plan to retire RxJava 1 within six months (i.e., only bugfixes then on), partly due to the increasing maintenance burden on my "one man army" for some time now; partly to "encourage" the others to switch to the RxJava 2 ecosystem. As for RxJava 3, I don't have any concrete plans yet. There are ongoing discussions about splitting the library along types or along backpressure support as well as making the so-called operator-fusion elements (which give a significant boost to our performance) a standard extension of the Reactive Streams specification.
0 notes
vatt-world · 5 years ago
Text
jj
javascript event loop concurrency store value - Google Search
www.google.com
Sep 10, 2020
TypeScript: Playground - An online editor for exploring TypeScript and JavaScript
www.typescriptlang.org
Sep 10, 2020
TypeScript: Playground - An online editor for exploring TypeScript and JavaScript
www.typescriptlang.org
JavaScript Concurrency Model and Event Loop
www.freecodecamp.org
javascript null vs undefined - Google Search
www.google.com
Sep 17, 2020
javascript event loop concurrency - Google Search
www.google.com
Sep 17, 2020
javascript event loop async - Google Search
www.google.com
javascript inheritance - Google Search
www.google.com
Sep 17, 2020
Inheritance
www.tutorialsteacher.com
Sep 17, 2020
javascript closure concurrency - Google Search
www.google.com
Sep 17, 2020
Concurrency model and the event loop - JavaScript | MDN
developer.mozilla.org
Sep 17, 2020
javascript closure - Google Search
www.google.com
Sep 17, 2020
Closures - JavaScript | MDN
developer.mozilla.org
Sep 17, 2020
JavaScript Function Closures
www.w3schools.com
javascript event loop concurrency - Google Search
www.google.com
Sep 17, 2020
javascript event loop - Google Search
www.google.com
Sep 17, 2020
javascript var vs let vs const - Google Search
www.google.com
AngularJS - Component vs Controller based design - Proficient Blog
proficientblog.com
Sep 17, 2020
angular spa example - Google Search
www.google.com
Sep 17, 2020
Build Single Page Application Using AngularJS (Tutorial with Example)
www.softwaretestinghelp.com
Sep 17, 2020
angular ng rx - Google Search
www.google.com
Sep 17, 2020
AngularJS - Controllers - Tutorialspoint
www.tutorialspoint.com
Sep 17, 2020
AngularJS Tutorial - Tutorialspoint
www.tutorialspoint.com
Sep 17, 2020
angular js tutorialspoint - Google Search
www.google.com
javascript var vs let - Google Search
www.google.com
javascript null vs undefined - Google Search
www.google.com
ChronoUnit (Java Platform SE 8 )
docs.oracle.com
Sep 16, 2020
41. Testing
docs.spring.io
Sep 16, 2020
Example ex04_1: HTTP Method Extension | RESTfu­­l Jav­a­ wit­h ­JAX­-­­RS 2.­0­ (Second Edition)
dennis-xlc.gitbooks.io
Sep 16, 2020
JAX-RS - Client and ClientBuilder Examples
www.logicbig.com
What is the difference between null and undefined in JavaScript?
www.tutorialspoint.com
Sep 17, 2020
javascript data types - Google Search
www.google.com
Sep 17, 2020
Data types
javascript.info
Sep 17, 2020
JavaScript Data Types
www.w3schools.com
hat’s the difference between AngularJS and Angular? | Gorrion's Blog
gorrion.io
Sep 17, 2020
What’s the difference between AngularJS and Angular? | Gorrion's Blog
gorrion.io
Sep 18, 2020
Full Stack Development Using Spring Boot Angular and React | Udemy
www.udemy.com
Sep 17, 2020
Full Stack Development Using Spring Boot Angular and React | Udemy
www.udemy.com
Sep 17, 2020
Full Stack Development Using Spring Boot Angular and React | Udemy
www.udemy.com
Sep 17, 2020
angular ngrx - Google Search
www.google.com
Sep 17, 2020
angular to web api call - Google Search
www.google.com
Sep 17, 2020
Call REST-full API’s | Web services using Angular and RxJS. | by Ankit Maheshwari | Medium
medium.com
Sep 17, 2020
Angular - Communicating with backend services using HTTP
angular.io
Sep 17, 2020
angular component lifecycle - Google Search
www.google.com
Sep 17, 2020
Angular 6, Part 3: Lifecycle of a Component - DZone Web Dev
dzone.com
Sep 17, 2020
Angular - Hooking into the component lifecycle
angular.io
Sep 17, 2020
angular 2 vs angular 6 - Google Search
www.google.com
Sep 17, 2020
angularjs vs angular - Google Search
www.google.com
Sep 17, 2020
angular controller vs component - Google Search
www.google.com
Building a Reactive Application with Ngrx and Angular 2 | Toptal
0 notes