<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Wejdi</title>
    <description>The latest articles on Forem by Wejdi (@wejdi_gh).</description>
    <link>https://forem.com/wejdi_gh</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F502470%2Fb04803c1-a49c-408d-a032-d9ddc2bf26d1.png</url>
      <title>Forem: Wejdi</title>
      <link>https://forem.com/wejdi_gh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/wejdi_gh"/>
    <language>en</language>
    <item>
      <title>The Difference Between Continuous Integration, Deployment and Delivery</title>
      <dc:creator>Wejdi</dc:creator>
      <pubDate>Thu, 17 Dec 2020 11:25:42 +0000</pubDate>
      <link>https://forem.com/wejdi_gh/the-difference-between-continuous-integration-deployment-and-delivery-2kia</link>
      <guid>https://forem.com/wejdi_gh/the-difference-between-continuous-integration-deployment-and-delivery-2kia</guid>
      <description>&lt;p&gt;Frequently used in modern development practices and DevOps, continuous integration (CI), continuous deployment (CD), and continuous delivery (CD) are like vectors that have the same direction, but different magnitude. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fqkbxgzk9lb9lvu05pr8a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fqkbxgzk9lb9lvu05pr8a.png" alt="CI CD CD"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Their goal is the same: make our software development and release process faster and more robust by speed delivery and accuracy, giving developers the tools they need to deliver better products, with fewer bugs, and implement improvements. continuously. &lt;/p&gt;

&lt;p&gt;So, what’s the difference between continuous integration vs continuous delivery vs continuous deployment ? How they are linked with each other and what are the benefits to opt them ….&lt;/p&gt;

&lt;h1&gt;
  
  
  1) Continuous Integration (CI)
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0m9ywqj63n2uf17d6rag.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0m9ywqj63n2uf17d6rag.jpg" alt="Continuous  Integration"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Is about automating build and test processes to make sure the resulting software is in a good state, ideally every time a developer changes code.&lt;/p&gt;

&lt;p&gt;So CI is the process of enforcing developers to merge their code to mainstream branch or working code base as often as possible.&lt;/p&gt;

&lt;p&gt;CI Involves triggering a build when a change gets committed to the source code repository by any developer. which includes, fetching the code from source code repository, compiling code, running automated tests and creating build out of it. &lt;/p&gt;

&lt;p&gt;CI benefits developers most because it allows for code produced to be automatically tested and continuously “integrated” with other developers’ code, and with the existing codebase.&lt;/p&gt;

&lt;p&gt;The developer benefits from receiving continuous and immediate feedback regarding code and integration errors. Fixing these errors, automated testing tools in this stage will report if the errors were successfully fixed and when the code is accepted. This continuous feedback loop dramatically increases a developer’s productivity.&lt;/p&gt;

&lt;h1&gt;
  
  
  2) Continuous Delivery (CD)
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F44li2u4ck3me7c3d20ex.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F44li2u4ck3me7c3d20ex.jpg" alt="Continuous Delivery"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Continuous delivery is an extension of continuous integration since it automatically deploys all code changes to a testing and/or production environment after the build stage. So &lt;strong&gt;No Continuous Integration, No Deal&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;This means that on top of automated testing, you have an automated release process and you can deploy your application any time by clicking a button.&lt;/p&gt;

&lt;p&gt;The goal of Continuous Delivery is to make sure the software is always ready to be released but isn’t pushed to production unless you make the decision to do so. It is a manual step.&lt;/p&gt;

&lt;h1&gt;
  
  
  3) Continuous Deployment (CD)
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fu7fcrzqrpvubic5uxlz8.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fu7fcrzqrpvubic5uxlz8.jpg" alt="Continuous Deployement"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Continuous deployment goes one step further than continuous delivery.It's a process that automatically deploys the results of Continuous Delivery into the final production environment, usually every time a developer changes code (assuming all automated tests pass).&lt;/p&gt;

&lt;p&gt;There's no human intervention, and only a failed test will prevent a new change to be deployed to production.&lt;/p&gt;

&lt;p&gt;Continuous deployment is an excellent way to accelerate the feedback loop with your customers and take pressure off the team as there isn't a Release Day anymore. Developers can focus on building software, and they see their work go live minutes after they've finished working on it.&lt;/p&gt;

&lt;h1&gt;
  
  
  4) Continuous integration VS Continuous Delivery VS Continuous Deployment
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8f9qapc1zjjlxdhgrchb.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8f9qapc1zjjlxdhgrchb.jpg" alt="Continuous-Integration-vs.-Continuous-Delivery-vs.-Continuous-Deployment"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Continuous integration is the beginning of the cycle where builds are created and tested. &lt;/p&gt;

&lt;p&gt;Continuous delivery encompasses the cycle from the beginning of CI and ends with the “release” of the verified artifacts packages, VM or container images published onto a download server. &lt;/p&gt;

&lt;p&gt;Continuous deployment ensures that qualified releases are automatically deployed to production taken from the download servers and made the currently running version in one or more environments/locations, typically also using rolling upgrades in order to ensure that applications remain available to users during the process.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fb4h6b1fmsheff7oertjx.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fb4h6b1fmsheff7oertjx.jpg" alt="ManualVSAutomatic"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Continuous Delivery is when your code is always ready to be released but isn’t pushed to production unless you make the &lt;br&gt;
decision to do so. It is a manual step. With Continuous Deployment, any updated working version of the app is automatically pushed to production.&lt;/p&gt;

&lt;h1&gt;
  
  
  5) Continuous Process Benefits :
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4patiobucr7edmxamz7m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4patiobucr7edmxamz7m.png" alt="Benefits-of-CI_CD-6"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Continually integrate and test to reduce risk.&lt;/li&gt;
&lt;li&gt;Build Stuff Faster and never ship Broken Code Into Production.&lt;/li&gt;
&lt;li&gt;Easy detection of integration Bugs.&lt;/li&gt;
&lt;li&gt;Consistency of Build Process.&lt;/li&gt;
&lt;li&gt;Always have a deployable build.&lt;/li&gt;
&lt;li&gt;Generate metrics to guide project management.&lt;/li&gt;
&lt;li&gt;Increases Confidence in the Software.&lt;/li&gt;
&lt;li&gt;Accelerated Time to Market.&lt;/li&gt;
&lt;li&gt;Improved Productivity and Efficiency.&lt;/li&gt;
&lt;li&gt;Improved Customer Satisfaction.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  6) Continuous Process Tools
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fim5veg3dcyyy00eaj20b.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fim5veg3dcyyy00eaj20b.jpeg" alt="ContinuousDeliveryToolLandscape"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Development teams can take advantage of Continuous Integration by deploying a solution such as Jenkins, the most popular open source tool in the space, and configuring it to build and test their code. Also we can use Bamboo, TeamCity, Buddy...  &lt;/p&gt;

&lt;p&gt;Continuous Delivery usually involves other DevOps-related tools like Puppet, Chef, Ansible, or SaltStack to install and configure environments for testing. Docker and container orchestration components like Kubernetes make it easier for teams to automatically set up and tear down these environments as part of the CI/CD process. The open source project Spinnaker, created by Netflix, provides a robust Continuous Delivery and Continuous Deployment solution. &lt;/p&gt;

&lt;p&gt;There exist several tools, depending on the requirement the tools can be selected.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;Like many technological concepts, continuous integration, continuous delivery, and continuous deployment are terms that DevOps teams use without defining them precisely. So, it’s worth taking a closer look at what each of these terms actually means.&lt;/p&gt;

&lt;p&gt;I hope you now get the difference between Continuous Integration, Continuous Delivery and Continuous Deployment.&lt;/p&gt;

&lt;p&gt;Altogether the practices create an efficient system free of bugs and ready for use.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Web Development. From Design to Code</title>
      <dc:creator>Wejdi</dc:creator>
      <pubDate>Tue, 15 Dec 2020 12:38:21 +0000</pubDate>
      <link>https://forem.com/wejdi_gh/web-development-from-design-to-code-5b33</link>
      <guid>https://forem.com/wejdi_gh/web-development-from-design-to-code-5b33</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Filp70fso5wtbyc9d1zxf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Filp70fso5wtbyc9d1zxf.png" alt="from design to development"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Web prototyping, design, development… just where do a designer’s skills end and a developer’s begin?&lt;/p&gt;

&lt;p&gt;If you don’t know what’s the difference between UX design, UI design, Front-end developement, or Back-end developement and what they can do for your project, this article is for you.&lt;/p&gt;

&lt;h1&gt;
  
  
  A-Web Designer vs Web Developer
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frigke97kipuxyx558jec.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frigke97kipuxyx558jec.jpg" alt="slide-6-1024"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Primary goals of disgners and developers are to raise user satisfaction, decrease user churn, and ensure user-based company goals are reached. Such goals might include increasing newsletter sign-ups, improving sales conversions, or identifying and removing pain points within an app.&lt;/p&gt;

&lt;h3&gt;
  
  
  1) Developers
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Convert the concept design to a rea-time website.&lt;/li&gt;
&lt;li&gt;They Build the core structure of website using coding languages. - They are further divided into 3 categories :&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;-Front-end:&lt;/em&gt; developer is a person who creates the interface and the layout of the website for the interaction between the back end of the website and the users. &lt;br&gt;
&lt;em&gt;-Back-end:&lt;/em&gt; developers are those who are responsible for the server-side web application and they are usually write the web services and APIs used by front-end developers.&lt;br&gt;
&lt;em&gt;-Full-Stack:&lt;/em&gt; developer works on different layers or stacks which includes both the front and backend. &lt;/p&gt;

&lt;h3&gt;
  
  
  2) Designers
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Focus on the user experience with the aesthetic and visual aspects of the website.&lt;/li&gt;
&lt;li&gt;Mainly responsible for the layout of the website.&lt;/li&gt;
&lt;li&gt;They are like the architects of the website who take care of the website's feel and look.&lt;/li&gt;
&lt;li&gt;Their role is to transfer the client's ideas into an appealing design.&lt;/li&gt;
&lt;li&gt;They use tools like Adobe Photoshop, Illustrator or Sketch to design the layout of the website.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now you must be having a clearer idea about the roles of a website designer and a website developer.Both have a significant role in the creation of a website and both complement each other work.And to ensure the smooth working of a website they should be in regular touch with each other. &lt;/p&gt;

&lt;h1&gt;
  
  
  B-Design
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8gp8o3w7b7kytupkrijj.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8gp8o3w7b7kytupkrijj.jpg" alt="web Design"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;About 94% of people abandon a poorly designed page. Great web design will let you make a great first impression and transform users into evangelists of your brand. &lt;/p&gt;

&lt;p&gt;User Interface (UI) and User Experience (UX) are some of the most frequently mixed-up terms in the world of business technology.&lt;/p&gt;

&lt;h3&gt;
  
  
  1) What is UX Design in Web Development?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F5c8xypnoqdlvd6gfs8c4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F5c8xypnoqdlvd6gfs8c4.png" alt="UX Design"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;User experience design is a human-first way of designing products.&lt;/p&gt;

&lt;p&gt;“User experience encompasses all aspects of the end-user’s interaction with the company, its services, and its products.”&lt;br&gt;
– Don Norman, Cognitive Scientist &amp;amp; User Experience Architect.&lt;/p&gt;

&lt;p&gt;The “user experience” part refers to the interaction between the user and a product or service.&lt;/p&gt;

&lt;p&gt;The responsibility for UX design enforces the need for a deep and complete understanding of end-users, their motives and the value they get with the product or service.&lt;/p&gt;

&lt;p&gt;UX primarily takes place in two distinct phases: &lt;br&gt;
&lt;strong&gt;-research:&lt;/strong&gt; During the research phase, the UX designers use a variety of tools and methods to better understand their intended users. Competitive analysis, user interviews, persona creation, wireframing, heuristic analysis and journey flows may all be involved.&lt;br&gt;
&lt;strong&gt;-Validation:&lt;/strong&gt; After the product has launched, UX designers perform usability/pain point analysis to determine if the product is producing the desired result. If not, refinements and revisions are made based on user data to make the end result better and more efficient. &lt;/p&gt;

&lt;h4&gt;
  
  
  *Differences Between Good and Bad UX Design
&lt;/h4&gt;

&lt;p&gt;One of the main objectives of a UX design is to create an inviting, usable website that helps users get what they need and stay on your site.&lt;/p&gt;

&lt;p&gt;The 5 Key UX Design Principles You Need To Know:&lt;br&gt;
&lt;strong&gt;-Hierarchy:&lt;/strong&gt; Hierarchy is one of designers’ best tools to help users move through a product easily.&lt;br&gt;
&lt;strong&gt;-Consistency:&lt;/strong&gt; Users expect products to be consistent with similar products they’ve used in the past. The more familiar your product is, the more easily users will learn it and the better their experience will be.&lt;br&gt;
&lt;strong&gt;-Confirmation:&lt;/strong&gt; Preventing errors is one of our key goals as designers. When users accidentally delete an item or make an unintended payment, their experience falls apart. Requiring confirmation for any important or irreversible action is one of the best ways to prevent these errors.&lt;br&gt;
&lt;strong&gt;-User Control:&lt;/strong&gt; User control comes into play in a few ways in UX, but generally users have a better experience if you give them control over where they are in the product and what they’re doing.&lt;br&gt;
&lt;strong&gt;-Accessibility:&lt;/strong&gt; In digital product design, accessibility typically means designing products so they’re easy for users with disabilities to use. Since we design products for people, it’s crucial that our products can be used by as many people as possible.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Exemple:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Demonstrate current state&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2paloplxz9vt76zkwxft.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2paloplxz9vt76zkwxft.gif" alt="good bad save UX"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This means that applications that don’t provide timely feedback as to what the system is doing may create a more negative or confusing experience. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;WhatsApp’s delete message feature&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here’s what instead happens when you delete your message:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjop0x9zldvk2epehclgz.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjop0x9zldvk2epehclgz.jpg" alt="whatsapp-deleted-message-ux"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Why it’s bad UX: Informing the recipient that the sender has deleted a message somewhat defeats the purpose of deleting it in the first place. In fact, this looks way more suspicious and is likely to prompt an awkward “why did you delete the message?” type of response.&lt;/p&gt;

&lt;h3&gt;
  
  
  2) What is UI Design in Web Development?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fd5k34xlitnvgyhwc4tb6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fd5k34xlitnvgyhwc4tb6.png" alt="UI Design"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Unlike UX, user interface design is a strictly digital term. A user interface is the point of interaction between the user and a digital device or product.&lt;/p&gt;

&lt;p&gt;Users often judge a system by its interface rather than its functionality and a poorly designed interface is reason why so many software systems are never used.&lt;/p&gt;

&lt;p&gt;In relation to websites and apps, UI design considers the look, feel, and interactivity of the product. This is often referred to as the “skin” of an application. It’s all about making sure that the user interface of a product is as intuitive as possible, and that means carefully considering each and every visual, interactive element the user might encounter.&lt;/p&gt;

&lt;p&gt;A UI designer will think about icons and buttons, typography and color schemes, spacing, imagery, and responsive design.They also tend to be the ones creating high-fidelity mock-ups and interactive prototypes.&lt;/p&gt;

&lt;h4&gt;
  
  
  *Differences Between Good and Bad Interface Design
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fs2rr2ubkfbcbldub6jhk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fs2rr2ubkfbcbldub6jhk.png" alt="bad-good UI"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are not a few UI design principles on the web, but the top golden rules for UI design will be the 4E’ in the following. Also, this can be the standard to judge whether it’s a good UI design:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Error-free.&lt;/li&gt;
&lt;li&gt;Easy to use.&lt;/li&gt;
&lt;li&gt;Easy to understand.&lt;/li&gt;
&lt;li&gt;Effective for the end goal or product.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Exemple:&lt;/em&gt;&lt;br&gt;
Distinction between primary and secondary buttons&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjetxrneje888my227brm.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjetxrneje888my227brm.jpg" alt="bad ui"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When working with apps, you will have many actions that the user is able to complete. It is important to give visual importance to the primary actions.&lt;/p&gt;

&lt;p&gt;Obviously, good design can make us feel at home and everything out there is just in the right place, while bad design will make you feel like having a bad taste in your mouth and all you want to do is to leave quickly.&lt;/p&gt;

&lt;h1&gt;
  
  
  C-Development
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdel9qj6bv43wcgmjqs3c.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdel9qj6bv43wcgmjqs3c.jpg" alt="Web Developement "&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Now that you have a well-designed User Experience and an outstanding User Interface designed accordingly, you still need to create your app or website and its interface. What you have now is the visual part that actually doesn't do anything. Now it's time to let developers do their job.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F52j6siovtm05dwpbsz8b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F52j6siovtm05dwpbsz8b.png" alt="Server-Side-vs-Client-Side-Programming"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Main parts of every website are: the client, the database, the server , the user:&lt;br&gt;
&lt;strong&gt;-The Server:&lt;/strong&gt;this part of website is responsible for holding data, running the website’s back-end architecture, processing requests, and sending response to the browser.&lt;br&gt;
&lt;strong&gt;-The Client:&lt;/strong&gt; requests pages from the Server, and displays them to the The User. In most cases, the client is a web browser.&lt;br&gt;
&lt;strong&gt;-The DataBase:&lt;/strong&gt; is a data structure that stores organized information that can easily be accessed, managed and updated.&lt;br&gt;
&lt;strong&gt;-The User:&lt;/strong&gt; uses the Client in order to surf the web, fill in forms, watch videos online, in other words and interact with webpage.&lt;/p&gt;

&lt;h3&gt;
  
  
  1) What is Front-end in Web Development?
&lt;/h3&gt;

&lt;p&gt;All websites consist of structure, data, design, content, and functionality. Creating user-facing functionality is the task of a front-end developer. Using a combination of markup languages, design, client-side scripts, and frameworks, they create everything that users see and interact with: content, layout, and functional elements.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1cljl2ly5d4lufww26ka.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1cljl2ly5d4lufww26ka.PNG" alt="ux ui dev"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, as you can see, for the front-end of the application to work, you need more than just User Interface. This visual part needs to be programmed. This is where front-end developers enter to do their job.&lt;/p&gt;

&lt;p&gt;It's good when a front-end developer knows the essentials of UX and UI design principles. However, most often it is a typically technical role that needs mainly programming skills. On the other hand, you might meet front-end developers, who are UI designers at the same time.&lt;/p&gt;

&lt;h3&gt;
  
  
  2) What is Back-end in Web Development?
&lt;/h3&gt;

&lt;p&gt;Back end development refers to the server side of an application and everything that communicates between the database and the browser.&lt;/p&gt;

&lt;p&gt;Back-end developers create services that process business logic and access other resources such as databases, file servers, cloud services and more. These services are the backbone of any application and can be accessed and used not only by server-side rendering apps but also from client-side rendering apps.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F97illuy8mub9dekyhovl.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F97illuy8mub9dekyhovl.jpg" alt="backenddeveloper"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3) Some of the technologies on which the developer works
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;-HTML or hypertext markup language:&lt;/strong&gt; it is the standard computer language used to achieve graphical and functional effects on web pages.&lt;br&gt;
&lt;strong&gt;-CSS Cascading style sheets (CSS):&lt;/strong&gt; describes how HTML elements are to be displayed on screen, paper, or in other media.&lt;br&gt;
&lt;strong&gt;-JavaScript:&lt;/strong&gt; With its frameworks and libraries, JavaScript is the programming language which is used to make web pages interactive.It is called the first client-side language and is still the most common client-side script on the web.&lt;br&gt;
&lt;strong&gt;-PHP, ASP, Java or C++:&lt;/strong&gt; open source Back-end programming languages which are created explicitly to create dynamic sites which are different from static sites in that these types of websites store database information.&lt;br&gt;
&lt;strong&gt;-MySQL:&lt;/strong&gt; it is the flexible open-source database management system and it is the most popular choice for managing online content in the database.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;This article focused on the key aspects of design and development as the way from design to real digital product.&lt;/p&gt;

&lt;p&gt;User experience (UX) design is centered around the satisfaction the user experiences with your software. Front-end development is the technical implementation of the software’s user interface (UI). UI design is the graphical bridge that connects the two. Having these three areas working together seamlessly is the key to happy users and happy upper management alike.&lt;/p&gt;

</description>
      <category>design</category>
      <category>ux</category>
      <category>ui</category>
      <category>development</category>
    </item>
    <item>
      <title>How Java Has Advanced In The Past 6 Years (From Java 8 to Java 15)</title>
      <dc:creator>Wejdi</dc:creator>
      <pubDate>Fri, 11 Dec 2020 13:00:11 +0000</pubDate>
      <link>https://forem.com/wejdi_gh/how-java-has-advanced-in-the-past-6-years-from-java-8-to-java-15-4gj3</link>
      <guid>https://forem.com/wejdi_gh/how-java-has-advanced-in-the-past-6-years-from-java-8-to-java-15-4gj3</guid>
      <description>&lt;h1&gt;
  
  
  Java Release Cycle
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fixge2lyra4pg9695apg8.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fixge2lyra4pg9695apg8.PNG" alt="Java Release"&gt;&lt;/a&gt;&lt;br&gt;
Until version 8 , Java version release  was one every 3 years ,so there were few versions with many features.&lt;/p&gt;

&lt;p&gt;It was therefore complicated to deliver a new version of Java and complicated for developers to upgrade their applications due to the number of changes included.&lt;/p&gt;

&lt;p&gt;This pace no longer keeps up with the reality of the IT world where everything is going faster and faster! So Java architects decided to publish a version every 6 months (therefore a fixed schedule)&lt;/p&gt;

&lt;p&gt;In each version, all the ready features are incorporated, those that are not ready will be delivered in the next one (no more late version).&lt;/p&gt;

&lt;h1&gt;
  
  
  Java 8 most important Features with Examples
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fq5owx5pm8ihx15ftowfe.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fq5owx5pm8ihx15ftowfe.jpg" alt="java 8"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1) New Features in Java language&lt;/strong&gt;&lt;br&gt;
● &lt;strong&gt;forEach() method&lt;/strong&gt;&lt;br&gt;
Java 8 has introduced forEach method in java.lang.Iterable interface so that while writing code we focus on business logic only.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbkjtewsoc1esrs4tvne1.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbkjtewsoc1esrs4tvne1.PNG" alt="foreach"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Lambda Expression&lt;/strong&gt;&lt;br&gt;
The biggest new feature of Java 8 is language level support for lambda expressions (Project Lambda).&lt;br&gt;
 Lambda Expressions syntax is (argument) -&amp;gt; (body).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fpnil6wy1puzm8hhhjg17.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fpnil6wy1puzm8hhhjg17.PNG" alt="lambada exemples"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Interface’s default and Static Methods&lt;/strong&gt;&lt;br&gt;
Prior to java 8, interface in java can only have abstract methods. All the methods of interfaces are public &amp;amp; abstract by default. Java 8 allows the interfaces to have default and static methods. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;-Default methods :&lt;/em&gt; The reason we have default methods in interfaces is to allow the developers to add new methods to the interfaces without affecting the classes that implements these interfaces.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvnr8ilfar20f2ybj9nnh.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvnr8ilfar20f2ybj9nnh.PNG" alt="default interface method"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;-Static methods :&lt;/em&gt; in interfaces are similar to the default methods except that we cannot override these methods in the classes that implements these interfaces.&lt;br&gt;
For example, there are many static methods on the new Stream interface. This makes “helper” methods easier to find since they can be located directly on the interface, instead of a different&lt;br&gt;
class such as StreamUtil or Streams.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F7e2843453cqpimh0dde6.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F7e2843453cqpimh0dde6.PNG" alt="static interface method"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Functional Interface&lt;/strong&gt;&lt;br&gt;
In Java 8 a functional interface is defined as an interface with exactly one abstract method. This even applies to interfaces that were created with previous versions of Java.&lt;br&gt;
Java 8 comes with several new functional interfaces in the package, java.util.function.&lt;br&gt;
 -Function - takes an object of type T and returns R.&lt;br&gt;
 -Supplier - just returns an object of type T.&lt;br&gt;
 -Predicate - returns a boolean value based on input of type T.&lt;br&gt;
 -Consumer - performs an action with given object of type T.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fek81rt1zsumtf1y5fg51.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fek81rt1zsumtf1y5fg51.PNG" alt="lambada exemples"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Method References&lt;/strong&gt;&lt;br&gt;
Method references are a special type of lambda expressions. They're often used to create simple lambda expressions by referencing existing methods.&lt;br&gt;
There are four kinds of method references:&lt;br&gt;
  -Static methods&lt;br&gt;
  -Instance methods of particular objects&lt;br&gt;
  -Instance methods of an arbitrary object of a particular type&lt;br&gt;
  -Constructor&lt;br&gt;
Exemple :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fm68oku3tsecmy1fh3i75.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fm68oku3tsecmy1fh3i75.PNG" alt="Reference methods"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2) New Features in Java libraries&lt;/strong&gt;&lt;br&gt;
● &lt;strong&gt;Stream API&lt;/strong&gt;&lt;br&gt;
The Stream interface is such a fundamental part of Java 8 .&lt;/p&gt;

&lt;p&gt;We can use Java Stream API to implement internal iteration, that is better because java framework is in control of the iteration.&lt;/p&gt;

&lt;p&gt;The Stream interface supports the map/filter/reduce pattern and executes lazily, forming the basis&lt;br&gt;
(along with lambdas) for functional-style programming in Java 8.&lt;/p&gt;

&lt;p&gt;There are also corresponding primitive streams (IntStream, DoubleStream, and LongStream) for performance reasons.&lt;/p&gt;

&lt;p&gt;With Java 8, Collection interface has two methods to generate a Stream :&lt;br&gt;
 -stream():Returns a sequential stream considering collection as its source.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F08eppxbjnzf62vhxztq4.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F08eppxbjnzf62vhxztq4.PNG" alt="stream"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;-parallelStream() : Returns a parallel Stream considering collection as its source.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fi9afzmhbyfwjk5ku4o39.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fi9afzmhbyfwjk5ku4o39.PNG" alt="parallelStream"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Optional&lt;/strong&gt;&lt;br&gt;
Java 8 comes with the Optional class in the java.util package for avoiding null return values (and thus NullPointerException).&lt;/p&gt;

&lt;p&gt;If a value is present, isPresent() will return true and get() will return the value. Stream terminal operations return Optional object. &lt;br&gt;
Some of these methods are:&lt;br&gt;
 -Optional reduce(BinaryOperator accumulator)&lt;br&gt;
 -Optional min(Comparator&amp;lt;? super T&amp;gt; comparator)&lt;br&gt;
 -Optional max(Comparator&amp;lt;? super T&amp;gt; comparator)&lt;br&gt;
 -Optional findFirst()&lt;br&gt;
 -Optional findAny()&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Date/Time API&lt;/strong&gt;&lt;br&gt;
With Java 8, a new Date-Time API is introduced to cover the following drawbacks of old date-time API:&lt;br&gt;
 -Not thread safe&lt;br&gt;
 -Poor design&lt;br&gt;
 -Difficult time zone handling &lt;/p&gt;

&lt;p&gt;Java 8 Date Time API consists of following packages:&lt;br&gt;
1.java.time Package: This is the base package of new Java Date Time API. such as LocalDate, LocalTime, LocalDateTime, Instant, Period, Duration etc. All of these classes are immutable and thread safe.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;java.time.chrono Package: This package defines generic APIs for non ISO calendar systems. We can extend AbstractChronology class to create our own calendar system.&lt;/li&gt;
&lt;li&gt;java.time.temporal Package: This package contains temporal objects and we can use it for find out specific date or time related to date/time object. For example, we can use these to find out the first or last day of the month. You can identify these methods easily because they always have format “withXXX”.&lt;/li&gt;
&lt;li&gt;java.time.zone Package: This package contains classes for supporting different time zones and their rules.&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Java 9 most important Features with Examples
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvtqupju2h7sz78m9r9fl.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvtqupju2h7sz78m9r9fl.jpg" alt="java9"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Java 9 included better support for multi-gigabyte heaps, better native code integration, a different default garbage collector (G1, for "shorter response times") and a self-tuning JVM.&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Java Platform Module System (Project Jigsaw)&lt;/strong&gt;&lt;br&gt;
It is a new kind of Java programing component that can be used to collect Java code (classes and packages). The main goal of this project is to easily scale down application to small devices. In Java 9, JDK itself has divided into set of modules to make it more lightweight. It also allows us to develop modular applications.&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;JShell: the interactive Java REPL&lt;/strong&gt;&lt;br&gt;
JShell is a REPL (Read Evaluate Print Loop) tool and run from the command line.&lt;br&gt;
It is an interactive Java Shell tool, it allows us to execute Java code from the shell and shows output immediately.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fy1ii6ukss5fn89qs2lwh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fy1ii6ukss5fn89qs2lwh.png" alt="Jshell"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Process API Improvements&lt;/strong&gt;&lt;br&gt;
Java has improved its process API in Java 9 version, they have added couple new classes and methods to ease the controlling and managing.&lt;br&gt;
Two new interfcase in Process API:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;java.lang.ProcessHandle&lt;/li&gt;
&lt;li&gt;java.lang.ProcessHandle.Info&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fm3g4nfqky7gd8uund1kv.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fm3g4nfqky7gd8uund1kv.PNG" alt="process"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Interface Private Methods&lt;/strong&gt;&lt;br&gt;
In Java 9, we can create private methods inside an interface. Interface allows us to declare private methods that help to share common code between non-abstract methods.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fajt9ru8f3giai9vt5e6f.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fajt9ru8f3giai9vt5e6f.PNG" alt="private methods"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Java Collection Factory Methods&lt;/strong&gt;&lt;br&gt;
Factory methods are special type of static methods that are used to create unmodifiable instances of collections. It means we can use these methods to create list, set and map of small number of elements.&lt;br&gt;
It is unmodifiable, so adding new element will throw java.lang.UnsupportedOperationException&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffkecqmzel3hl03dt0p6w.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffkecqmzel3hl03dt0p6w.PNG" alt="private methods"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Stream API Improvement&lt;/strong&gt;&lt;br&gt;
The Streams API is arguably one of the best improvements to the Java standard library in a long time.&lt;br&gt;
In Java 9, Stream API has improved and new 4 methods are added to the Stream interface :iterate(), dropWhile(), takeWhile(), ofNullable().&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fyqn475h0w14cseqkztxn.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fyqn475h0w14cseqkztxn.PNG" alt="stram improvement"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Reactive Streams&lt;/strong&gt;&lt;br&gt;
Java SE 9 Reactive Streams API is a Publish/Subscribe Framework to implement Asynchronous, Scalable and Parallel applications.&lt;br&gt;
Reactive Streams is about asynchronous processing of stream, so there should be a Publisher and a Subscriber. The Publisher publishes the stream of data and the Subscriber consumes the data.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fy5a9vy6zgy0dcimzkhqd.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fy5a9vy6zgy0dcimzkhqd.PNG" alt="reactive stream"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;HTTP 2 Client&lt;/strong&gt;&lt;br&gt;
A new way of performing HTTP calls arrives with Java 9. This much overdue replacement for the old HttpURLConnection API also supports WebSockets and HTTP/2 protocol.&lt;br&gt;
 It supports both Synchronous (Blocking Mode) and Asynchronous Modes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fcry4pz2f7t4cw5g9cicj.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fcry4pz2f7t4cw5g9cicj.PNG" alt="HTTP2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;G1 Garbage Collector&lt;/strong&gt; &lt;br&gt;
The “Garbage-first” garbage collector, aka G1, is a concurrent multi-threaded GC. It mostly works alongside the application threads (much like the concurrent mark sweep GC) and is designed to offer shorter, more predictable pause times – while still achieving high throughput.&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Other new Fectures&lt;/strong&gt; &lt;br&gt;
  -Stack-Walking API&lt;br&gt;
  -Filter Incoming Serialization Data&lt;br&gt;
  -Deprecate the Applet API&lt;br&gt;
  -Indify String Concatenation&lt;br&gt;
  -Enhanced Method Handles&lt;br&gt;
  -Java Platform Logging API and Service&lt;br&gt;
  -Compact Strings&lt;br&gt;
  -Parser API for Nashorn&lt;br&gt;
  -Javadoc Search&lt;br&gt;
  -HTML5 Javadoc&lt;/p&gt;

&lt;h1&gt;
  
  
  Java 10 most important Features with Examples
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fv5l3nqa2knbcurs0k3i9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fv5l3nqa2knbcurs0k3i9.png" alt="java10"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Java 10 is the fastest release of a java version in its 23-year history. Java has been criticized for its slow growth and evolution, but Java 10 just shattered that concept. &lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Local-Variable Type Inference&lt;/strong&gt; &lt;br&gt;
Local variable type inference is the biggest new feature in Java 10 for developers. &lt;br&gt;
Similar to Javascript, Kotlin, and Scala, now Java will also have a var keyword that allows you to declare a local variable without specifying its type.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvwuidgs0dtfup44djuve.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvwuidgs0dtfup44djuve.PNG" alt="var"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Time-Based Release Versioning&lt;/strong&gt; &lt;br&gt;
From JDK 10 release, Java has adopted a new schedule of a new release every six months. There is a lot of debate whether this is a practical approach or not, larger companies also appreciated the stability and the low rate of change of Java so far.&lt;/p&gt;

&lt;p&gt;Oracle has responded to these concerns and continues to&lt;br&gt;
offer long-term releases on a regular basis, but also at&lt;br&gt;
longer intervals. And after Java 8, it is Java 11, which will&lt;br&gt;
receive a long term support again. &lt;/p&gt;

&lt;p&gt;In fact, Java 9 and Java 10 support has just ended, since&lt;br&gt;
Java 11 is out.&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Application Class-Data Sharing&lt;/strong&gt; &lt;br&gt;
This feature extends the existing CDS feature for allowing application classesto be placed in the shared archive in order to improve startup and footprint.&lt;/p&gt;

&lt;p&gt;The general idea was that when the JVM first launched, anything loaded was serialized and stored in a file on disk that could be reloaded on future launches of the JVM.&lt;/p&gt;

&lt;p&gt;This meant that multiple instances of the JVM shared the class metadata so it wouldn’t have to load them all every time.&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Parallel Full GC for G1&lt;/strong&gt; &lt;br&gt;
G1 garbage collector was made default in JDK 9.However, the full GC for G1 used a single threaded mark sweepcompact algorithm.&lt;/p&gt;

&lt;p&gt;This has been changed to the parallel mark-sweep-compact algorithm&lt;br&gt;
in Java 10 effectively reducing the stop-the-world time during full GC.&lt;/p&gt;

&lt;p&gt;This change won’t help the best-case performance times of the&lt;br&gt;
garbage collector, but it does significantly reduce the worst-case&lt;br&gt;
latencies. &lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Garbage-Collector Interface&lt;/strong&gt;&lt;br&gt;
This is one more interesting and useful Java 10 feature which improves the code isolation of different garbage collectors by introducing a common Garbage Collector Interface.&lt;/p&gt;

&lt;p&gt;It will help in the future for adding new GC without changing existing codebase, also help in removing or housekeeping of the previous GC.&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Root Certificates&lt;/strong&gt;&lt;br&gt;
With Java 10, Oracle has open-sourced the root certificates in&lt;br&gt;
Oracle’s Java SE Root CA program in order to make OpenJDK&lt;br&gt;
builds more attractive to developers and to reduce the&lt;br&gt;
differences between those builds and Oracle JDK builds. &lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Thread-Local Handshakes&lt;/strong&gt;&lt;br&gt;
This is an internal JVM feature to improve performance.&lt;br&gt;
This feature provides a way to execute a callback on threads without performing a global VM safepoint. Make it both possible and cheap to stop individual threads and not just all threads or none.&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;API’s Added&lt;/strong&gt;&lt;br&gt;
-List, Map &amp;amp; Set Interfaces are added with a static copyOf(Collection) method. Its returns an unmodifiable List, Map or Set containing the entries provided. For a List, if the given List is subsequently modified, the returned List will not reflect such modifications.&lt;/p&gt;

&lt;p&gt;-Optional &amp;amp; its primitive variations get a method orElseThrow(). This is exactly same as get(), however the java doc states that it is a preferred alternative then get().&lt;/p&gt;

&lt;p&gt;-Collectors class gets various methods for collecting unmodifiable collections (Set, List, Map).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffxuvgxld30whuxngzikx.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffxuvgxld30whuxngzikx.PNG" alt="java10 added API"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Java 11 most important Features with Examples
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fa050qvgs7mxaqkgnk1ke.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fa050qvgs7mxaqkgnk1ke.png" alt="java11"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Java 11 is the second LTS release after Java 8. Since Java 11, Oracle JDK would no longer be free for commercial use.&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Running Java File&lt;/strong&gt;&lt;br&gt;
We can avoid the compilation phase. We can compile execute in one command. We use the java command. It will implicitly compile without saving the.class file. &lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Java String Methods&lt;/strong&gt;&lt;br&gt;
1) isBlank(): This method returns true if the string is empty or contains only white spaces code points.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fzadb2rugxjfknimvfpxp.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fzadb2rugxjfknimvfpxp.PNG" alt="isBlank"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2) lines() :  returns a reference for a stream of strings that are substrings we received after splitting by lines.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdqx783h4vabzoj8rh1uo.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdqx783h4vabzoj8rh1uo.PNG" alt="lines"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;3) strip(), stripLeading() and the stripTrailing : remove white spaces from the beginning, the ending and the remr of the string. Itis a 'Unicode-Aware' evolution of trim();&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Faet1nuovc035j8lv8isb.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Faet1nuovc035j8lv8isb.PNG" alt="strip"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4) repeat(): method repeats the string on which it is invoked the number of times it receives.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fn289nynt5pocl6z8tmgy.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fn289nynt5pocl6z8tmgy.PNG" alt="repeat"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Using var in Lambda Expressions&lt;/strong&gt;&lt;br&gt;
As of Java 11 we can use the var keyword within lambda expressions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fc02pc0eui5hf21c5g69c.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fc02pc0eui5hf21c5g69c.PNG" alt="lambda var"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When using var in a lambda expression we must use it on all parameters and we cannot mix it with using specific types.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Feacab6dimdj0w90l9262.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Feacab6dimdj0w90l9262.PNG" alt="lambda var error"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Nested Based Access Control&lt;/strong&gt;&lt;br&gt;
Before Java 11, Java allows classes and interfaces to be nested within each other. These nested types have unrestricted access to each other, including to private fields, methods, and constructors.&lt;/p&gt;

&lt;p&gt;As of Java 11, there are new methods in Class class that assist us with getting information about the created nest. These methods include the following: &lt;br&gt;
&lt;strong&gt;getNestHost()&lt;/strong&gt; : This returns the nest host of the nest to which this Class object belongs&lt;br&gt;
&lt;strong&gt;getNestMembers()&lt;/strong&gt; : This returns an array containing Class objects representing all the members of the nest to which this Class object belongs&lt;br&gt;
&lt;strong&gt;isNestemateOf()&lt;/strong&gt; : This determines if the given Class is a nestmate of this Class object&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fix4hyxo9zqqa9lspn2vz.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fix4hyxo9zqqa9lspn2vz.PNG" alt="nested1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2h3fdm1tr67yxom3ueag.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2h3fdm1tr67yxom3ueag.PNG" alt="nested2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Epsilon: A No-Op Garbage Collector&lt;/strong&gt;&lt;br&gt;
As of Java 11, the JVM has an experimental feature that allows us to run the JVM without any actual memory reclamation.&lt;/p&gt;

&lt;p&gt;The goal is to provide a completely passive garbage collector implementation with a bounded allocation limit and the lowest latency overhead possible.&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;ZGC Scalable Low Latency GC&lt;/strong&gt;&lt;br&gt;
As of Java 11, we can use the ZGC. This new GC is available as an experimental feature.&lt;br&gt;
ZGC is a scalable low latency garbage collector. It performs the expensive work concurrently without stopping the execution of application threads for more than 10ms. &lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;HTTP Client&lt;/strong&gt;&lt;br&gt;
As of Java 11, the HTTP Client API is more standardized. The new API supports both HTTP/1.1 and HTTP/2. The new API also supports HTML5 WebSockets. &lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Files Reading and Writing&lt;/strong&gt;&lt;br&gt;
Java 11 introduces two new methods that significantly assist with reading and writing strings from and to files : &lt;strong&gt;readString()&lt;/strong&gt;, &lt;strong&gt;writeString()&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4lg6psnlecbb7zl43863.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4lg6psnlecbb7zl43863.PNG" alt="write read file"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Flight Recorder&lt;/strong&gt;&lt;br&gt;
Flight Recorder which earlier used to be a commercial add-on in Oracle JDK is now open-sourced since Oracle JDK is itself not free anymore.&lt;/p&gt;

&lt;p&gt;JFR is a profiling tool used to gather diagnostics and profiling data from a running Java application.&lt;/p&gt;

&lt;p&gt;Its performance overhead is negligible and that’s usually below 1%. Hence it can be used in production applications.&lt;/p&gt;

&lt;h1&gt;
  
  
  Java 12 most important Features with Examples
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fi4o37y7z0x06hstbnzif.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fi4o37y7z0x06hstbnzif.jpg" alt="java12"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Java 12 was launched on March 19 2019 , which is a part of the six-month release cycle.&lt;br&gt;
It is a Non-LTS version. Hence it won’t have long term support.&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;JVM Changes&lt;/strong&gt;&lt;br&gt;
– Shenandoah A Low-Pause-Time Garbage Collector: Java 12 adds Shenandoah, an experimental garbage-collection algorithm, to reduce garbage-collection pause times by performing evacuation work concurrently with running of Java threads.&lt;/p&gt;

&lt;p&gt;-Prompt return of unused committed memory: G1 to automatically return Java heap memory to the operating system when idle. This memory is released in a reasonable period of time when there is very low application activity.&lt;/p&gt;

&lt;p&gt;-Abortable Mixed Collections for G1: Improvements in G1 efficiency include making G1 mixed collections abortable if they might exceed the defined pause target. This is done by splitting the mixed collection set into mandatory and optional.&lt;/p&gt;

&lt;p&gt;-Default CDS Archives: The end goal is to improve the JDK build process by generating a class data-sharing (CDS) archive. Among the goals for this feature are: &lt;br&gt;
1) Improve out-of-the-box startup time.&lt;br&gt;
2) Get rid of the need to run -Xshare: dump to benefit from the CDS.&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Switch Expressions&lt;/strong&gt;&lt;br&gt;
There are two main changes to switch in Java with this JEP:&lt;br&gt;
1) Introduction of case L -&amp;gt; syntax that removes the need for break statements, because only the statements next to -&amp;gt; is executed.&lt;br&gt;
2) switch can be an expression, so it can have a value, or it can return a value.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvm93e579q93u5gawc8bb.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvm93e579q93u5gawc8bb.PNG" alt="switch 12 "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;File.mismatch method&lt;/strong&gt;&lt;br&gt;
Java 12 added the following method to compare two files:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4v705r4h56opasd4lyfu.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4v705r4h56opasd4lyfu.PNG" alt="file mismatch"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This method returns the position of the first mismatch or -1L if there is no mismatch.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F5nrl3e4zgnmsac42gtuy.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F5nrl3e4zgnmsac42gtuy.PNG" alt="mismatch 1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fqlovtmmwclaltd8xyolu.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fqlovtmmwclaltd8xyolu.PNG" alt="mismatch result"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Compact Number Formatting&lt;/strong&gt;&lt;br&gt;
Java 12 extends existing number formatting APIs to provide support for locale-sensitive compact number formatting.&lt;br&gt;
Now numbers like 1000 (for example) can be formatted as "1K" (short style) or "1 thousand" (long style).  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Flxyxsc4xcdacz4zjjo4x.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Flxyxsc4xcdacz4zjjo4x.PNG" alt="number formatter"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Teeing Collectors&lt;/strong&gt;&lt;br&gt;
Teeing Collector is the new collector utility introduced in the Streams API.&lt;br&gt;
This collector has three arguments – Two collectors and a Bi-function.&lt;br&gt;
All input values are passed to each collector and the result is available in the Bi-function.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2a59u9j7syqx23ijwf41.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2a59u9j7syqx23ijwf41.PNG" alt="teening collectors"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Java Strings New Methods&lt;/strong&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  1) java.lang.String :
&lt;/h5&gt;

&lt;p&gt;-indent​(int n): Adjusts the indentation of each line of this string based on the value of n, and normalizes line termination characters.&lt;/p&gt;

&lt;p&gt;-If n &amp;gt; 0, then n spaces (U+0020) are inserted at the beginning of each line.&lt;br&gt;
 -If n &amp;lt; 0, then up to n white space characters are removed from the beginning of each line. If a given line does not contain sufficient white space then all leading white space characters are removed. The tab character is also treated as a single character.&lt;br&gt;
 -If n = 0, then the line remains unchanged. However, line terminators are still normalized&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fifwc5bwm239bc7lfablu.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fifwc5bwm239bc7lfablu.PNG" alt="sring indent"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;- R transform​(Function&amp;lt;? super String,​? extends R&amp;gt; f): This method allows the application of a function to this string.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F7g58ogj3qwc475x4rcfj.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F7g58ogj3qwc475x4rcfj.PNG" alt="sring transform"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  2) JVM Constants API :
&lt;/h5&gt;

&lt;p&gt;The Constants API methods don’t have much usage for normal development related tasks.&lt;/p&gt;

&lt;p&gt;-Optional describeConstable(): Returns an Optional containing the nominal descriptor for this instance, which is the instance itself.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3edzvvdbulmryv3yalga.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3edzvvdbulmryv3yalga.PNG" alt="DescribeConstable"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;-String resolveConstantDesc​(MethodHandles.Lookup lookup): Resolves this instance as a ConstantDesc, the result of which is the instance itself.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fm6tz6gbtnt6bz9n7r9m0.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fm6tz6gbtnt6bz9n7r9m0.PNG" alt="resolveConstantDesc"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;#Java 13 most important Features with Examples#&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fpyr9zxal2olw9zto769c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fpyr9zxal2olw9zto769c.png" alt="java13"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Java 13 was released for production use on 17th September 2019. There are not a lot of developer-specific features in Java 13 because of the 6-month release cycle.&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Switch Expressions&lt;/strong&gt;&lt;br&gt;
We initially saw switch expressions in JDK 12. Java 13's switch expressions build on the previous version by adding a new yield statement.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjqe3upy8cpx093gbjdja.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjqe3upy8cpx093gbjdja.PNG" alt="switch 13"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Text Blocks&lt;/strong&gt;&lt;br&gt;
Text blocks for multi-line Strings such as embedded JSON, XML, HTML, etc.It allows us to create multiline strings easily. The multiline string has to be written inside a pair of triple-double quotes.&lt;/p&gt;

&lt;p&gt;Earlier, to embed JSON in our code, we would declare it as a String literal:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fnpib8c06mk8ptsjaeekw.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fnpib8c06mk8ptsjaeekw.PNG" alt="json string"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, it’s useful in easily creating HTML and JSON strings in our Java program :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fe4d9cwtnob2ta7ox3jzn.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fe4d9cwtnob2ta7ox3jzn.PNG" alt="json html 13"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also, java.lang.String now has three new methods to manipulate text blocks:&lt;br&gt;
1) formatted(Object… args): it’s similar to the String format() method. It’s added to support formatting with the text blocks.&lt;/p&gt;

&lt;p&gt;2) stripIndent(): used to remove the incidental white space characters from the beginning and end of every line in the text block. This method is used by the text blocks and it preserves the relative indentation of the content.&lt;/p&gt;

&lt;p&gt;3) translateEscapes(): returns a string whose value is this string, with escape sequences translated as if in a string literal.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1a9spp58z224ed9gk8lg.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1a9spp58z224ed9gk8lg.PNG" alt="string 13"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fun3viqud5q1v36zsznsy.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fun3viqud5q1v36zsznsy.PNG" alt="output string 13"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Dynamic CDS Archive&lt;/strong&gt;&lt;br&gt;
Class data sharing (CDS) has been a prominent feature of Java HotSpot VM for a while now. It allows class metadata to be shared across different JVMs to reduce startup time and memory footprint.&lt;br&gt;
Now, the creation of CDS archive and using it is much easier.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffkmhagirwvv6qehfsvzy.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffkmhagirwvv6qehfsvzy.PNG" alt="dynamic cds"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;ZGC: Uncommit Unused Memory&lt;/strong&gt;&lt;br&gt;
The Z Garbage Collector was introduced in Java 11 as a low-latency garbage collection mechanism.It adds a short pause time before the heap memory cleanup. But, the unused memory was not being returned to the operating system.&lt;/p&gt;

&lt;p&gt;Starting with Java 13, the ZGC now returns uncommitted memory to the operating system by default.&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;FileSystems.newFileSystem() Method&lt;/strong&gt;&lt;br&gt;
Three new methods have been added to the FileSystems class to make it easier to use file system providers, which treats the contents of a file as a file system : &lt;br&gt;
-newFileSystem(Path)&lt;br&gt;
-newFileSystem(Path, Map)&lt;br&gt;
-newFileSystem(Path, Map, ClassLoader)&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;DOM and SAX Factories with Namespace Support&lt;/strong&gt;&lt;br&gt;
There are new methods to instantiate DOM and SAX factories with Namespace support:&lt;br&gt;
-newDefaultNSInstance()&lt;br&gt;
-newNSInstance()&lt;br&gt;
-newNSInstance(String factoryClassName, ClassLoader classLoader)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhxcst95ew27cxqddv8c8.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhxcst95ew27cxqddv8c8.PNG" alt="dom sax"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Miscellaneous Changes&lt;/strong&gt;&lt;br&gt;
 Java 13 has given us a few more notable changes:&lt;br&gt;
-java.time – new official Japanese era name added&lt;br&gt;
-javax.crypto – support for MS Cryptography Next Generation (CNG)&lt;br&gt;
-javax.security – property jdk.sasl.disabledMechanisms added to disable SASL mechanisms&lt;br&gt;
-javax.xml.crypto – new String constants introduced to represent Canonical XML 1.1 URIs&lt;br&gt;
-javax.xml.parsers – new methods added to instantiate DOM and SAX factories with namespaces support&lt;br&gt;
-Unicode support upgraded to version 12.1&lt;br&gt;
-Support added for Kerberos principal name canonicalization and cross-realm referrals&lt;/p&gt;

&lt;h1&gt;
  
  
  Java 14 most important Features with Examples
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbz5heu9oo66h0k0e04yr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbz5heu9oo66h0k0e04yr.png" alt="java 14"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Keeping up with the six-month cycle tradition, Java 14, another non-LTS version is scheduled to release on March 17, 2020.&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Switch Expressions&lt;/strong&gt;&lt;br&gt;
Switch Expressions after staying a preview feature in the last two releases –Java 12 and Java 13 have finally attained permanent status in Java 14.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fapoow4x49kwaxtq99wb9.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fapoow4x49kwaxtq99wb9.PNG" alt="switch 14"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Pattern Matching for instanceof&lt;/strong&gt;&lt;br&gt;
The old way to typecast a type to another type is:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxbd7i5f9wk9mw4x7h75t.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxbd7i5f9wk9mw4x7h75t.PNG" alt="instance old"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The new way is :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgx0hoss6tdcsr3brwh5j.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgx0hoss6tdcsr3brwh5j.PNG" alt="instance new"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the above code, the instance jd would be only assigned if obj is of type Journaldev. The scope of the variable is limited to the conditional block only.&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Helpful NullPointerExceptions&lt;/strong&gt;&lt;br&gt;
 Improvement in NullPointerExceptions exception message generated by JVM.&lt;/p&gt;

&lt;p&gt;Before Java 14:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fw54hfu2bg28ykvbeheez.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fw54hfu2bg28ykvbeheez.PNG" alt="NullPointer old "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Java 14 introduced a new JVM feature which gives better insights with a more descriptive stack as shown below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F71h80cqpvochy3k4tzxq.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F71h80cqpvochy3k4tzxq.PNG" alt="NullPointer new "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Records&lt;/strong&gt;&lt;br&gt;
We need to write a lot of low-value, repetitive code to write a simple data carrier class responsibly: constructors, accessors, equals(), hashCode(), toString(), etc. To avoid this repetitive code, Java is planned to use record.&lt;/p&gt;

&lt;p&gt;Before Java 14 :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fp0bx7johm33vr7sa0lol.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fp0bx7johm33vr7sa0lol.PNG" alt="records old"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After Java 14 : &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftw3j4a5q7td1y7qjqwsx.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftw3j4a5q7td1y7qjqwsx.PNG" alt="record new"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Furthermore, we can add additional fields, methods, and constructor to the record in the following way:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8m84zdewhycsqvb9cuys.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8m84zdewhycsqvb9cuys.PNG" alt="record extra PNG"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Few important things to note about Records:&lt;br&gt;
-A record can neither extend a class nor it can be extended by another class. It’s a final class.&lt;br&gt;
-Records Can Implement Interfaces.&lt;br&gt;
-Records support multiple constructors.&lt;br&gt;
-Records Allow Modifying Accessor Methods.&lt;br&gt;
-Records cannot be abstract.&lt;br&gt;
-Records cannot extend any other class and cannot define instance fields inside the body. Instance fields must be defined in the state description only.&lt;br&gt;
-Declared fields are private and final.&lt;br&gt;
-The body of a record allows static fields and methods.&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Text Blocks&lt;/strong&gt;&lt;br&gt;
Text Blocks were introduced as a preview feature in Java 13 with the goal to allow easy creation of multiline string literals. It’s useful in easily creating HTML and JSON or SQL query strings.&lt;/p&gt;

&lt;p&gt;In Java 14, Text Blocks are still in preview with some new additions:&lt;br&gt;
-Backslash for displaying nice-looking multiline string blocks.&lt;br&gt;
-\s is used to consider trailing spaces which are by default ignored by the compiler. It preserves all the spaces present before it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F5uqmxpz2aw6n85fz75ww.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F5uqmxpz2aw6n85fz75ww.PNG" alt="text blocks 14"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Foreign-Memory Access API&lt;/strong&gt;&lt;br&gt;
An effective Java API is to be introduced in the Java 14 JDK, which enables Java applications to safely and efficiently access foreign memory stored outside the Java heap. The foreign-memory access API introduces three main abstractions: MemorySegment, MemoryAddress and MemoryLayout.&lt;/p&gt;

&lt;h1&gt;
  
  
  Java 15 most important Features with Examples
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fr9hfyio1u2vrkyb5tqzt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fr9hfyio1u2vrkyb5tqzt.png" alt="java 15"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Java 15 (Java SE 15) and its Java Development Kit 15 (JDK 15) open-source has been released on 15 September 2020.&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Sealed Classes&lt;/strong&gt;&lt;br&gt;
Sealed classes have been there in Kotlin since a while and Java 15 finally introduces this feature for better control over inheritance.&lt;br&gt;
A class can be sealed by using the &lt;strong&gt;sealed&lt;/strong&gt; modifier.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9qvrwynkx41gg95zwym2.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9qvrwynkx41gg95zwym2.PNG" alt="sealed class"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, the above code means, only the classes defined after the keyword &lt;strong&gt;permits&lt;/strong&gt; are allowed to extend the Vehicle sealed class.&lt;/p&gt;

&lt;p&gt;Every permitted class must be set with an explicit modifier. It can either be final or sealed or non-sealed :&lt;br&gt;
-A permitted subclass that’s declared final cannot be extended further.&lt;br&gt;
-A permitted subclass that’s declared sealed can be extended further but only by classes that are permitted by the subclass.&lt;br&gt;
-A permitted subclass may be declared non-sealed can be extended further by any class. The superclass cannot restrict the subclasses further down this class hierarchy.&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Hidden Classes&lt;/strong&gt;&lt;br&gt;
While most developers won't find a direct benefit from them, anyone who works with dynamic bytecode or JVM languages will likely find them useful.&lt;/p&gt;

&lt;p&gt;The goal of hidden classes is to allow the runtime creation of classes that are not discoverable.&lt;/p&gt;

&lt;p&gt;Classes such as these typically have a short lifecycle, and thus, hidden classes are designed to be efficient with both loading and unloading.&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Foreign Memory API&lt;/strong&gt;&lt;br&gt;
Foreign memory access is already an incubating feature of Java 14. In Java 15, the goal is to continue its incubation status while adding several new features:&lt;br&gt;
-A new VarHandle API, to customize memory access var handles&lt;br&gt;
-Support for parallel processing of a memory segment using the Spliterator interface&lt;br&gt;
-Enhanced support for mapped memory segments&lt;br&gt;
-Ability to manipulate and dereference addresses coming from things like native calls&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;Garbage Collectors&lt;/strong&gt;&lt;br&gt;
In Java 15, both ZGC and Shenandoah will be no longer be experimental. Both will be supported configurations that teams can opt to use, while the G1 collector will remain the default.&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;The Nashorn JavaScript engine&lt;/strong&gt;&lt;br&gt;
Of note, The Nashorn JavaScript engine, originally introduced in Java 8, is now removed. With the introduction of GraalVM and other VM technologies recently, it's clear Nashorn no longer has a place in the JDK ecosystem.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;This article presented the evolution of Java from Java 8 to Java 15 .&lt;/p&gt;

&lt;p&gt;Java has evolved enormously as a language and as an ecosystem since Java 8 was released over six years ago by adding many new features help to make Java a competitive option compared to other JVM-based rivals.&lt;/p&gt;

</description>
      <category>java</category>
    </item>
    <item>
      <title>Why Should I Learn ReactJS?</title>
      <dc:creator>Wejdi</dc:creator>
      <pubDate>Mon, 07 Dec 2020 15:06:18 +0000</pubDate>
      <link>https://forem.com/wejdi_gh/why-should-i-learn-reactjs-cf5</link>
      <guid>https://forem.com/wejdi_gh/why-should-i-learn-reactjs-cf5</guid>
      <description>&lt;h1&gt;
  
  
  What is ReactJS?
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxpbm87rdu3uomo7u72vu.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxpbm87rdu3uomo7u72vu.gif" alt="What is ReactJS?"&gt;&lt;/a&gt;&lt;br&gt;
ReactJS is an open source JavaScript library designed by Facebook for creating rich and engaging web apps fast and efficiently with minimal coding.&lt;br&gt;
The core objective of ReactJS is providing the best possible rendering performance using The Virtual DOM.&lt;br&gt;
Its strength comes from the focus on individual components , so Instead of working on the entire web app, ReactJS allows a developer to break down the complex UI into simpler components.&lt;/p&gt;

&lt;h1&gt;
  
  
  ReactJS Popularity
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fpgvqzcwtg9frjc1a9ffm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fpgvqzcwtg9frjc1a9ffm.png" alt="ReactJS Popularity"&gt;&lt;/a&gt;&lt;br&gt;
There's a high probability that there's no web framework that took as little time as React JS to be a leading one in the front-end web development.&lt;br&gt;
&lt;a href="https://trends.google.com/trends/explore?cat=31&amp;amp;q=Vue.js,React,Angular" rel="noopener noreferrer"&gt;Google Trends&lt;/a&gt; confirms that React is currently at the top. Why do we believe in its potential ? When it comes to developing interactive, dynamic user interfaces, nothing can beat it. An estimated number of 8064 industry leaders currently use React.js.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbledjw29gw3h9j28u960.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbledjw29gw3h9j28u960.PNG" alt="Capture"&gt;&lt;/a&gt;&lt;br&gt;
It's really no accident that React JS is used so much.&lt;br&gt;
It has been only seven years since the first release back in 2013, and it was open-sourced from the beginning. And in this short period of time, React JS has been one of the most used JavaScript frameworks.It's been growing rapidly in its path.&lt;br&gt;
React JS is the most loved amongst the frameworks, libraries, and technologies being used today.&lt;br&gt;
&lt;strong&gt;React&lt;/strong&gt; has continued to rise in popularity over the years and has been consistently ranked as the most used and favorite JavaScript library for building frontend applications according to &lt;a href="https://2019.stateofjs.com/front-end-frameworks/" rel="noopener noreferrer"&gt; State of JavaScript survey of 2019&lt;/a&gt;.&lt;br&gt;
The rise of React,is impressive and as an early adopter of React, I am and excited for its growth.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Flsye5f0ezg4x6q1h7wtk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Flsye5f0ezg4x6q1h7wtk.png" alt="front_end_frameworks_section_overview"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Who uses ReactJS ?
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwaytv9da7clrmz1j2qjy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwaytv9da7clrmz1j2qjy.png" alt="Who uses ReactJS "&gt;&lt;/a&gt;&lt;br&gt;
Part of this huge popularity comes from the fact that top corporations use it to solve user interface related issues. This credibility has drawn a lot of people to the framework.&lt;br&gt;
Both developers and entrepreneurs agree that React JS is the future of oriented framework, and it's very worth investing money and time to it.&lt;br&gt;
Here are some of the biggest sites built with React:&lt;br&gt;
&lt;strong&gt;Facebook&lt;/strong&gt;, &lt;strong&gt;Instagram&lt;/strong&gt;, &lt;strong&gt;What's up&lt;/strong&gt;, &lt;strong&gt;Twitter&lt;/strong&gt;, &lt;strong&gt;Microsoft&lt;/strong&gt;, &lt;strong&gt;Yahoo&lt;/strong&gt;, &lt;strong&gt;Netflix&lt;/strong&gt;, &lt;strong&gt;PayPal&lt;/strong&gt;, &lt;strong&gt;Imdb&lt;/strong&gt; , &lt;strong&gt;Uber&lt;/strong&gt;, &lt;strong&gt;Wix&lt;/strong&gt;, &lt;strong&gt;Atlassian&lt;/strong&gt;, &lt;strong&gt;CloudFalare&lt;/strong&gt;, &lt;strong&gt;Slack&lt;/strong&gt;, &lt;strong&gt;Dropbox&lt;/strong&gt;, &lt;strong&gt;Salesforce&lt;/strong&gt;, &lt;strong&gt;Airbnb&lt;/strong&gt;, &lt;strong&gt;Reddit&lt;/strong&gt;, &lt;strong&gt;BBC&lt;/strong&gt; And the list goes on!&lt;/p&gt;

&lt;h1&gt;
  
  
  Top reasons why you should learn React right now
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fse2lt084f3u1mbngh6rt.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fse2lt084f3u1mbngh6rt.jpg" alt="React-benefits-1-1024x576"&gt;&lt;/a&gt;&lt;br&gt;
 &lt;strong&gt;1-React has an awesome community&lt;/strong&gt;&lt;br&gt;
One of the most preferred reasons to learn React JS is its popularity. And with popularity comes a wide community to help new developers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2-React is SEO-friendly&lt;/strong&gt;&lt;br&gt;
React is widely recognised as the friendliest JavaScript library for SEO purposes. While React in itself isn’t SEO-friendly (like all JS frameworks), React embraces SEO and its components are easier for Google to crawl.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3-React is very scalable&lt;/strong&gt;&lt;br&gt;
The very first and main evidence of the React JS scalability is Facebook itself.&lt;br&gt;
It's made entirely on React JS and has over 50,000 different components. And it's still growing without any performance problems!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4-React is all about Reusable Components&lt;/strong&gt;&lt;br&gt;
React saves you time and money on development because it’s component-based. You can break down an interface into reusable components that allow you to build dynamic user interfaces.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5-React’s Performance is Amazing&lt;/strong&gt;&lt;br&gt;
High performance is critical for web applications. 47% of people expect a webpage to load in 2 seconds or less. Additionally, 33% of your userbase will abandon your website if it takes more than 10 seconds to load.&lt;br&gt;
Businesses that use ReactJS are assured of better performance compared to those that use other frameworks.&lt;br&gt;
React is using a virtual DOM, which means it doesn’t have to generate all the HTML files from the bottom to the top, whenever the change appears.&lt;br&gt;
Instead, he looks for the differences between the current and the old HTML and updating it accordingly, making all the loading experience feels like a blink of an eye.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6-Development Speed&lt;/strong&gt;&lt;br&gt;
React been also built with developers in mind.&lt;br&gt;
The coding itself allows you to create web and mobile apps way much faster than any other framework.&lt;br&gt;
The great advantage of React is that you can just code it once, and use it on the different platforms. You can hire one good React developer and he will be able to build web apps, mobile apps, and even apps for a tablet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7-Backward Compatibility&lt;/strong&gt;&lt;br&gt;
Still, none of the other frameworks is able to be so easily compatible.&lt;br&gt;
If you use Angular, there is a big chance that instead of upgrading it to the new version you will have to write your app from scratch with the new public API.&lt;br&gt;
Whenever a new version of React is coming out, the public API remains almost totally the same. This helps Facebook refresh it’s code and still be able to work on his old pieces at the same time.&lt;br&gt;
In other words, you don’t have to learn React again and again after each and every launch, and you can be sure your older version remains compatible with all the new components.&lt;/p&gt;

&lt;h1&gt;
  
  
  The Future of ReactJS
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fj4qovarcw108a620pvyb.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fj4qovarcw108a620pvyb.jpg" alt="React-Cover"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The future is 100% great due to the support of substantial big Community Facebook. The developers and businesses strongly believe that the ReactJS applications give them high performance and good quality for market reach.&lt;br&gt;
You can think and imagine the future of ReactJS by yourself after knowing the large and most popular companies names that use React.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;Each and every technology seems to have the same goal – doing things easier, faster, and ultimately better.&lt;/p&gt;

&lt;p&gt;Learning &lt;strong&gt;ReactJS&lt;/strong&gt; is the need of the hour and makes sense as it is providing much-needed ease to developers in building highly engaging web applications and user interfaces in very lesser time, where they create large scale apps with frequently changing data.&lt;/p&gt;

&lt;p&gt;So I guess there’s only one question left to ask: what are you waiting for?  &lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
