<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by A N M Bazlur Rahman on Medium]]></title>
        <description><![CDATA[Stories by A N M Bazlur Rahman on Medium]]></description>
        <link>https://medium.com/@bazlur_rahman?source=rss-25248d59f9da------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*6CJMf_ms-2JSm7CYTC9qHw.jpeg</url>
            <title>Stories by A N M Bazlur Rahman on Medium</title>
            <link>https://medium.com/@bazlur_rahman?source=rss-25248d59f9da------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Fri, 13 Nov 2026 11:16:44 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@bazlur_rahman/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[Exploring the Impact of Stack Size on JVM Thread Creation: A Myth Debunked]]></title>
            <link>https://medium.com/@bazlur_rahman/exploring-the-impact-of-stack-size-on-jvm-thread-creation-a-myth-debunked-e459febe7758?source=rss-25248d59f9da------2</link>
            <guid isPermaLink="false">https://medium.com/p/e459febe7758</guid>
            <category><![CDATA[concurrency]]></category>
            <category><![CDATA[threads]]></category>
            <category><![CDATA[java]]></category>
            <dc:creator><![CDATA[A N M Bazlur Rahman]]></dc:creator>
            <pubDate>Sun, 24 Sep 2023 13:10:33 GMT</pubDate>
            <atom:updated>2023-09-24T13:10:33.744Z</atom:updated>
            <content:encoded><![CDATA[<p><strong>Among Java developers, a prevailing assumption is that the number of native threads that can be created within the Java Virtual Machine (JVM) is linked to the stack size. To scrutinize this widespread notion, an experiment was conducted. The results revealed that stack size plays a less significant role in native thread creation than previously thought.</strong></p><h3>The Experiment</h3><p>The experiment utilized the following Java program, which continuously creates threads and counts them using an <a href="https://download.java.net/java/early_access/jdk21/docs/api/java.base/java/util/concurrent/atomic/AtomicInteger.html">AtomicInteger</a>.</p><pre>import java.util.concurrent.atomic.AtomicInteger;<br>import java.util.concurrent.locks.LockSupport;<br><br>public class ThreadCounter {<br>   public static void main(String[] args) {<br>       AtomicInteger counter = new AtomicInteger();<br><br>       while (true) {<br>           Thread thread = new Thread(() -&gt; {<br>               counter.incrementAndGet();<br>               if (counter.get() % 100 == 0) {<br>                   System.out.printf(&quot;Number of threads created so far: %d%n&quot;, counter.get());<br>               }<br>               LockSupport.park();<br>           });<br>           thread.start();<br>       }<br>   }<br>}</pre><h3>Test Environment</h3><p>The test ran on a machine with the following configuration:</p><ul><li>Processor: Apple M1 Max</li><li>Memory: 64 GB</li><li>Operating System: macOS Vancura</li><li>Java Version: openjdk 21</li></ul><h3>Experimental Results</h3><h3>Default Stack Size</h3><p>The initial test was conducted using the default stack size of 2048 KB. Approximately 16,300 threads were created before an <a href="https://download.java.net/java/early_access/jdk21/docs/api/java.base/java/lang/OutOfMemoryError.html">OutOfMemoryError</a> was triggered.</p><p>Number of threads created so far: 16300</p><p>Number of threads created so far: 16300</p><pre>Number of threads created so far: 16300<br>[3.566s][warning][os,thread] Failed to start thread &quot;Unknown thread&quot; - pthread_create failed (EAGAIN) for attributes: stacksize: 2048k, guardsize: 16k, detached.<br>[3.566s][warning][os,thread] Failed to start the native thread for java.lang.Thread &quot;Thread-16354&quot;<br>Exception in thread &quot;main&quot; java.lang.OutOfMemoryError: unable to create native thread: possibly out of memory or process/resource limits reached</pre><p>Calculations indicate that the memory required for these 16,300 threads was around 31.875 GB, well below the total memory of 64 GB.</p><h3>10 MB Stack Size</h3><p>To change the stack size to 10 MB, the following JVM option was used:</p><pre>-XX:ThreadStackSize=10240</pre><p>The program yielded a similar result — 16,300 threads — before the OutOfMemoryError occurred again.</p><p>Number of threads created so far: 16300</p><p>Number of threads created so far: 16300</p><pre>Number of threads created so far: 16300<br>[3.995s][warning][os,thread] Failed to start thread &quot;Unknown thread&quot; - pthread_create failed (EAGAIN) for attributes: stacksize: 10240k, guardsize: 16k, detached.<br>[3.995s][warning][os,thread] Failed to start the native thread for java.lang.Thread &quot;Thread-16354&quot;<br>Exception in thread &quot;main&quot; java.lang.OutOfMemoryError: unable to create native thread: possibly out of memory or process/resource limits reached<br>    at java.base/java.lang.Thread.start0(Native Method)</pre><p>In case you want to use IntelliJ IDEA, you can configure the stack size, check the following image:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*lyZFZCmYdGeyXJA5.png" /></figure><h3>1 GB Stack Size</h3><p>Finally, for the most extreme case, the stack size was set to 1 GB using:</p><pre>-XX:ThreadStackSize=1048576</pre><p>Remarkably, the program again maxed out at approximately 16,300 threads, reinforcing the pattern observed in the previous tests.</p><p>Number of threads created so far: 16300</p><p>Number of threads created so far: 16200</p><p>Number of threads created so far: 16300</p><pre>Number of threads created so far: 16300<br>[3.995s][warning][os,thread] Failed to start thread &quot;Unknown thread&quot; - pthread_create failed (EAGAIN) for attributes: stacksize: 10240k, guardsize: 16k, detached.<br>[3.995s][warning][os,thread] Failed to start the native thread for java.lang.Thread &quot;Thread-16354&quot;<br>Exception in thread &quot;main&quot; java.lang.OutOfMemoryError: unable to create native thread: possibly out of memory or process/resource limits reached<br>    at java.base/java.lang.Thread.start0(Native Method)</pre><h3>Insights from the Data</h3><p>The consistency across all three tests underscores that stack size does not affect the number of native threads that can be created. Rather, the limitation appears to be imposed by the operating system.</p><p>It’s worth noting that the OS was capable of creating more threads than the available physical memory, thanks to the concept of virtual memory. Virtual memory leverages disk space to extend RAM, allowing applications to allocate more memory than is physically present, albeit at a lower access speed.</p><h3>Conclusion</h3><p>Contrary to the commonly held belief, this experiment proves that stack size does not have an impact on the number of native threads that can be created in a JVM environment.</p><p>The constraint is primarily set by the operating system. This investigation effectively dispels the myth that stack size is the determining factor in native thread limitations.</p><p><strong><em>Thank you for reading this. If you have a different perspective on this topic or if your experiments yield different results, I would be very interested to hear about it. Please feel free to share your findings with me.</em></strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e459febe7758" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to use tools to achieve more readable code]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/@bazlur_rahman/how-to-use-tools-to-achieve-more-readable-code-3d5bf0f2b90c?source=rss-25248d59f9da------2"><img src="https://cdn-images-1.medium.com/max/1000/0*gnBGQ7r5SpAAOyyx" width="1000"></a></p><p class="medium-feed-snippet">Lamda expression, stream API, is one of the latest addition o java. It enables us to write code in a way that reads better. We all know&#x2026;</p><p class="medium-feed-link"><a href="https://medium.com/@bazlur_rahman/how-to-use-tools-to-achieve-more-readable-code-3d5bf0f2b90c?source=rss-25248d59f9da------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://medium.com/@bazlur_rahman/how-to-use-tools-to-achieve-more-readable-code-3d5bf0f2b90c?source=rss-25248d59f9da------2</link>
            <guid isPermaLink="false">https://medium.com/p/3d5bf0f2b90c</guid>
            <category><![CDATA[refactoring]]></category>
            <category><![CDATA[clean-code]]></category>
            <category><![CDATA[java8]]></category>
            <category><![CDATA[lambda-expressions]]></category>
            <category><![CDATA[stream-api]]></category>
            <dc:creator><![CDATA[A N M Bazlur Rahman]]></dc:creator>
            <pubDate>Thu, 19 Dec 2019 18:11:34 GMT</pubDate>
            <atom:updated>2019-12-20T21:45:46.841Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Improving Code Readability — Lesson 1: Range checking]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/@bazlur_rahman/improving-code-readability-lesson-1-range-checking-b474de6ab533?source=rss-25248d59f9da------2"><img src="https://cdn-images-1.medium.com/max/1000/0*Kzd0hV6nUAf2kQcL" width="1000"></a></p><p class="medium-feed-snippet">The Stream API is one of the significant and most-wanted features after lambda expressions in Java 8. The Stream API works like a pipeline&#x2026;</p><p class="medium-feed-link"><a href="https://medium.com/@bazlur_rahman/improving-code-readability-lesson-1-range-checking-b474de6ab533?source=rss-25248d59f9da------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://medium.com/@bazlur_rahman/improving-code-readability-lesson-1-range-checking-b474de6ab533?source=rss-25248d59f9da------2</link>
            <guid isPermaLink="false">https://medium.com/p/b474de6ab533</guid>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[code]]></category>
            <category><![CDATA[reading]]></category>
            <category><![CDATA[skills]]></category>
            <category><![CDATA[java]]></category>
            <dc:creator><![CDATA[A N M Bazlur Rahman]]></dc:creator>
            <pubDate>Wed, 25 Sep 2019 10:32:08 GMT</pubDate>
            <atom:updated>2019-09-25T10:32:08.143Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Three mistakes junior software developer makes that prevent them from getting hired on amazing…]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/@bazlur_rahman/three-mistakes-junior-software-developer-makes-that-prevent-them-from-getting-hired-on-amazing-b224fd9d56a5?source=rss-25248d59f9da------2"><img src="https://cdn-images-1.medium.com/max/1000/0*4TFujN_BjAY8fqrE" width="1000"></a></p><p class="medium-feed-snippet">Being hired is not easy, especially it is somewhat difficult for the junior software developers to be appointed to work on amazing&#x2026;</p><p class="medium-feed-link"><a href="https://medium.com/@bazlur_rahman/three-mistakes-junior-software-developer-makes-that-prevent-them-from-getting-hired-on-amazing-b224fd9d56a5?source=rss-25248d59f9da------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://medium.com/@bazlur_rahman/three-mistakes-junior-software-developer-makes-that-prevent-them-from-getting-hired-on-amazing-b224fd9d56a5?source=rss-25248d59f9da------2</link>
            <guid isPermaLink="false">https://medium.com/p/b224fd9d56a5</guid>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[junior-developer]]></category>
            <category><![CDATA[jobs]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[amazing-project]]></category>
            <dc:creator><![CDATA[A N M Bazlur Rahman]]></dc:creator>
            <pubDate>Wed, 25 Sep 2019 10:19:13 GMT</pubDate>
            <atom:updated>2019-09-25T10:19:13.368Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[What is microservice?]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/@bazlur_rahman/what-is-microservice-117d2fddffc1?source=rss-25248d59f9da------2"><img src="https://cdn-images-1.medium.com/max/1000/0*ZGqRh4gXPbVbFEmj" width="1000"></a></p><p class="medium-feed-snippet">Microservices are independently deployable service that works together over a network, modeled around a business domain.</p><p class="medium-feed-link"><a href="https://medium.com/@bazlur_rahman/what-is-microservice-117d2fddffc1?source=rss-25248d59f9da------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://medium.com/@bazlur_rahman/what-is-microservice-117d2fddffc1?source=rss-25248d59f9da------2</link>
            <guid isPermaLink="false">https://medium.com/p/117d2fddffc1</guid>
            <category><![CDATA[software-architecture]]></category>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[microservices]]></category>
            <dc:creator><![CDATA[A N M Bazlur Rahman]]></dc:creator>
            <pubDate>Thu, 19 Sep 2019 15:34:09 GMT</pubDate>
            <atom:updated>2019-09-19T15:34:09.576Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[The ultimate goal of Object-Oriented Design of Software]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/@bazlur_rahman/the-ultimate-goal-of-object-oriented-design-of-software-63a5b91d8cbc?source=rss-25248d59f9da------2"><img src="https://cdn-images-1.medium.com/max/2600/1*eL0-XNRPXEUpdHQFpdchFw.jpeg" width="5300"></a></p><p class="medium-feed-snippet">The ultimate goal of object-oriented design is complexity management.&#xA0;
Our brain has an enormous capacity or potential; however, we can&#x2026;</p><p class="medium-feed-link"><a href="https://medium.com/@bazlur_rahman/the-ultimate-goal-of-object-oriented-design-of-software-63a5b91d8cbc?source=rss-25248d59f9da------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://medium.com/@bazlur_rahman/the-ultimate-goal-of-object-oriented-design-of-software-63a5b91d8cbc?source=rss-25248d59f9da------2</link>
            <guid isPermaLink="false">https://medium.com/p/63a5b91d8cbc</guid>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[software]]></category>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[oop]]></category>
            <category><![CDATA[object-oriented]]></category>
            <dc:creator><![CDATA[A N M Bazlur Rahman]]></dc:creator>
            <pubDate>Wed, 18 Sep 2019 11:27:56 GMT</pubDate>
            <atom:updated>2019-09-18T11:41:51.580Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[7 ways to improve your code reading skill]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/@bazlur_rahman/7-ways-to-improve-your-code-reading-skill-af47ec199fb9?source=rss-25248d59f9da------2"><img src="https://cdn-images-1.medium.com/max/2600/1*FqC1Dw6pAHZM4-1C6QU9aw.jpeg" width="4831"></a></p><p class="medium-feed-snippet">Reading source code is one of the job descriptions of a software developer. However, this experience is not always pleasant. Not everyone&#x2026;</p><p class="medium-feed-link"><a href="https://medium.com/@bazlur_rahman/7-ways-to-improve-your-code-reading-skill-af47ec199fb9?source=rss-25248d59f9da------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://medium.com/@bazlur_rahman/7-ways-to-improve-your-code-reading-skill-af47ec199fb9?source=rss-25248d59f9da------2</link>
            <guid isPermaLink="false">https://medium.com/p/af47ec199fb9</guid>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[code-reading-skills]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[skills]]></category>
            <category><![CDATA[software-engineering]]></category>
            <dc:creator><![CDATA[A N M Bazlur Rahman]]></dc:creator>
            <pubDate>Fri, 13 Sep 2019 18:56:03 GMT</pubDate>
            <atom:updated>2019-09-17T16:06:06.018Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[5 ways to improve your communication skills to be a better software developer]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/@bazlur_rahman/5-ways-to-improve-your-communication-skills-to-be-a-better-software-developer-6fe4f4296d44?source=rss-25248d59f9da------2"><img src="https://cdn-images-1.medium.com/max/2600/1*NiQBQdOFDnvqUwoRtyIu7Q.jpeg" width="5355"></a></p><p class="medium-feed-snippet">Communication is the key to everything. Human invented languages to communicate with other human being and the endeavor went beyond just&#x2026;</p><p class="medium-feed-link"><a href="https://medium.com/@bazlur_rahman/5-ways-to-improve-your-communication-skills-to-be-a-better-software-developer-6fe4f4296d44?source=rss-25248d59f9da------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://medium.com/@bazlur_rahman/5-ways-to-improve-your-communication-skills-to-be-a-better-software-developer-6fe4f4296d44?source=rss-25248d59f9da------2</link>
            <guid isPermaLink="false">https://medium.com/p/6fe4f4296d44</guid>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[skills]]></category>
            <category><![CDATA[communication-skills]]></category>
            <category><![CDATA[better-developer]]></category>
            <category><![CDATA[skills-development]]></category>
            <dc:creator><![CDATA[A N M Bazlur Rahman]]></dc:creator>
            <pubDate>Wed, 28 Aug 2019 23:42:42 GMT</pubDate>
            <atom:updated>2019-08-28T23:42:42.557Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Temporary Refactoring can be useful to improve your code reading skill]]></title>
            <link>https://medium.com/@bazlur_rahman/temporary-refactoring-can-be-useful-to-improve-your-code-reading-skill-8300aad7b422?source=rss-25248d59f9da------2</link>
            <guid isPermaLink="false">https://medium.com/p/8300aad7b422</guid>
            <category><![CDATA[code-reading-skills]]></category>
            <category><![CDATA[programming]]></category>
            <dc:creator><![CDATA[A N M Bazlur Rahman]]></dc:creator>
            <pubDate>Sun, 17 Sep 2017 12:56:00 GMT</pubDate>
            <atom:updated>2019-09-18T12:24:17.026Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1000/0*dfQNy7KoqmXgniJT" /><figcaption>Photo by <a href="https://unsplash.com/@hackcapital?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Hack Capital</a> on <a href="https://unsplash.com/search/photos/code?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><p>I was talking to a friend of mine, <a href="http://keepcalmandrefactor.com/">Scott</a>, over slack about reading code! How to improve the code reading skill.</p><p>I asked him what he does usually when he reads the source code. What he said is interesting –</p><p>He does a temporary refactoring. That’s it.</p><p>He usually takes a long method that can be separated out and then he makes it into a separate method.</p><p>For example- readEmployeeDataFromDatabase()</p><p>This method can be broken into multiple methods and he does that. He keeps doing that until he gets a sense for what the intent of the larger method is about. Then he takes a few notes of what the method does and rollbacks the changes.</p><p>He also mentioned that he does not do any unit testing because of its temporary, just to understand the code!</p><p>I believe this could be a great way towards improving <strong>code reading skills</strong>. Although what he suggested isn’t really a refactoring, but it can help you to understand the code you are reading.</p><p>Here, I have rushed through it, however, I have created a project- <a href="https://masterdevskills.com/">MasterDevSkills.com</a> where I will go into more detail with it. I’m going to create a lot of contents on coding and collaboration skills as well and all of them would be free!</p><p>Are you interested?</p><p>Join me at <a href="http://masterdevskills.com/">MasterDevSkills.com</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8300aad7b422" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[প্রোগ্রামিং আড্ডা: জাভা প্রোগ্রামিং ও অ্যান্ড্রয়েড: দশটি প্রশ্নের উত্তর]]></title>
            <link>https://medium.com/@bazlur_rahman/%E0%A6%AA%E0%A7%8D%E0%A6%B0%E0%A7%8B%E0%A6%97%E0%A7%8D%E0%A6%B0%E0%A6%BE%E0%A6%AE%E0%A6%BF%E0%A6%82-%E0%A6%86%E0%A6%A1%E0%A7%8D%E0%A6%A1%E0%A6%BE-%E0%A6%9C%E0%A6%BE%E0%A6%AD%E0%A6%BE-%E0%A6%AA%E0%A7%8D%E0%A6%B0%E0%A7%8B%E0%A6%97%E0%A7%8D%E0%A6%B0%E0%A6%BE%E0%A6%AE%E0%A6%BF%E0%A6%82-%E0%A6%93-%E0%A6%85%E0%A7%8D%E0%A6%AF%E0%A6%BE%E0%A6%A8%E0%A7%8D%E0%A6%A1%E0%A7%8D%E0%A6%B0%E0%A6%AF%E0%A6%BC%E0%A7%87%E0%A6%A1-%E0%A6%A6%E0%A6%B6%E0%A6%9F%E0%A6%BF-%E0%A6%AA%E0%A7%8D%E0%A6%B0%E0%A6%B6%E0%A7%8D%E0%A6%A8%E0%A7%87%E0%A6%B0-%E0%A6%89%E0%A6%A4%E0%A7%8D%E0%A6%A4%E0%A6%B0-13e8a10d137f?source=rss-25248d59f9da------2</link>
            <guid isPermaLink="false">https://medium.com/p/13e8a10d137f</guid>
            <dc:creator><![CDATA[A N M Bazlur Rahman]]></dc:creator>
            <pubDate>Thu, 03 Aug 2017 15:07:51 GMT</pubDate>
            <atom:updated>2017-08-03T15:07:51.187Z</atom:updated>
            <content:encoded><![CDATA[<p>দ্বিমিক কম্পিউটিং আয়োজিত ভাষা দিবসে মাতৃভাষায় প্রোগ্রামিং শেখা নিয়ে একটি বিশেষ আড্ডায় অনেক প্রশ্ন এসেছে। তবে সময় স্বল্পতার জন্য অনেকগুলো প্রশ্নের উত্তর দেওয়া সম্ভব হয়নি। নিচে এমন ১০ টি গুরুত্বপূর্ণ প্রশ্নের উত্তর দেওয়া হলো।</p><p><strong>প্রশ্নঃ বাংলাদেশে তো জাভাতে কাজ করে এমন সফটওয়্যার ফার্মের সংখ্যা কম, সুতরাং জাভা শিখে কী লাভ আছে ?</strong></p><p>উত্তরঃ বাংলাদেশে মোটেও জাভাতে কাজ করে এমন সফটওয়্যার ফার্মের সংখ্যা কম নয়। জাগবিডিতে একটা সার্ভে করা হয়েছিল তাতে যে সংখ্যা পাওয়া যায়, তার সংখ্যা মোটেও কম নয়। তাছাড়া সামগ্রিকভাবে বাংলাদেশের সফটওয়ার ইন্ডাস্ট্রি এতো বড় নয়। সার্ভেটির লিংক এখানে পাওয়া যাবে- <a href="https://goo.gl/O9mJf5">https://goo.gl/O9mJf5</a></p><p><strong>প্রশ্নঃ আমি সি প্রোগ্রামিং মোটামুটি পারি, তবে জাভা প্রোগ্রামিং ল্যাংগুয়েজের উপর প্রচুর আগ্রহ। কী করা যায়?</strong></p><p>উত্তরঃ যেহেতু আপনি সি প্রোগ্রামিং মোটামুটি পারেন, সেক্ষেত্রে আপনার জন্য জাভা প্রোগ্রামিং শুরু করাটা অনেক সহজ। আপনি যেকোনো একটা বই নিয়ে পড়তে শুরু করুন, বই পড়ার সঙ্গে সঙ্গে এতে যে কোডগুলো দেওয়া থাকবে সেগুলো করুন, অনুশীলনীগুলো শেষ করুন। জাভা শিখতে একটু সময় লাগবে, যেকোনো কিছু শিখতেই সময় লাগে। নতুন কিছু শিখতে হলে মস্তিষ্ককে একটি নতুন নিউরাল পাথওয়ে তৈরি করতে হয়। ব্যপারটা মস্তিষ্কের জন্য কষ্টদায়ক বলে শিখতে আমাদের কষ্ট হয়। কিন্তু একই জিনিস প্রচুর বেশি বেশি করতে থাকলে তা সহজ হয়ে যায় এবং নিউরাল পাথওয়ে দ্রুত তৈরি হয়ে যায়। মানুষের মস্তিষ্ক একটি লার্নিং মেশিন। আপনি যে কাজগুলো প্রতিনিয়ত করে থাকেন, সেগুলো কম্পিউটারের ক্যাশের মতো সামনে এসে রেখে দেয়। সুতরাং যত বেশি অনুশীলন করবেন ততবেশি একটা বিষয় আয়ত্তে চলে আসবে। এটি যেকোনো বিষয়ের জন্য সত্য।</p><p><strong>প্রশ্নঃ অ্যান্ড্রয়েড অ্যাপ্লিকেশন তৈরির জন্য কী কী মৌলিক ধারণা জানা লাগবে?</strong></p><p>উত্তরঃ অ্যান্ড্রয়েড যেহেতু জাভা প্রোগ্রামিং ল্যাংগুয়েজ ব্যবহার করে, সুরতাং জাভার স্ট্যান্ডার্ড এডিশনের আদ্যোপান্ত জানতে হবে। জাভা প্রোগ্রামিং ল্যাংগুয়েজের সিনট্যাক্স থেকে শুরু করে অবজেক্ট ওরিয়েন্টেড কনসেপ্ট, জেনেরিক্স, এক্সেপশন হ্যান্ডেলিং, আইও, কালেকশন ফ্রেমওয়ার্ক ইত্যাদি। অ্যান্ড্রয়েড অ্যাপ্লিকেশন বিল্ড করার জন্য একটি বিল্ডটুল ব্যবহার করে থাকে। এর নাম <a href="https://gradle.org/">গ্রাডল</a>। সুতরাং বিল্ডটুল কীভাবে কাজ করে তাও জানতে হবে। এছাড়াও সাধারণত সবধরণের অ্যান্ড্রয়েড অ্যাপ্লিকেশন মূলত ক্লায়েন্ট অ্যাপ হয়ে থাকে, মূল প্রসেসিং রিমুট সার্ভারে হয়ে থাকে। তাই রিমুট সার্ভারের সাথে কীভাবে যোগাযেগা করতে হয় তা জানতে হবে। এক্ষেত্রে অনেকগুলো হেইচটিটিপি(HTTP) ক্লায়েন্ট ব্যবহার করা শিখতে হবে। যদি সার্ভারের অংশটুকুতেও কাজ করতে হয় তাহলে কীভাবে সার্ভারের জন্য ব্যাকএন্ড (back-end) প্রোগ্রামিং করতে সেগুলোও জানতে হবে।</p><p><strong>প্রশ্নঃ বিশ্ববিদ্যালয়ের কোর্সে সুইং শেখানো হচ্ছে, জাভা সুইং দিয়ে কী কী করা যায়? ডেস্কটপ অ্যাপ্লিকেশন কি সুইং দিয়ে করা হয়?</strong></p><p>উত্তরঃ প্রথমত, বিশ্ববিদ্যালয়ের কোর্সে সুইং থাকা উচিৎ না। যেহেতু কোর্সে আছে, তাই আপানাকে শিখতে হবে, এখানে আসলে কিছু করার নেই। আগে জাভা দিয়ে ডেক্সটপ অ্যাপ্লিকেশন তৈরির জন্য সুইং ব্যবহার করা হতো, তবে এখন জাভাএফএক্স(JavaFx) ব্যবহার করা হয়। তবে আমি সুইং শেখার পরামর্শ দিচ্ছি না। কোর্সের জন্য যতটুকু দরকার ততটুকু শিখুন। অবজেক্ট ওরিয়েন্টেড কনসেপ্ট ও অন্যান্য দিকগুলোতে বেশি মনযোগ দিন।</p><p><strong>প্রশ্নঃ সি না শিখে কী জাভা শেখা যায়।</strong></p><p>উত্তরঃ সংক্ষিপ্ত উত্তর, হ্যা। তবে সি প্রোগ্রামিং আপানাকে প্রোগ্রামিংয়ের ধারণা তৈরি করতে সাহায্য করে। এ নিয়ে ধারণা পেতে হলে যেতে পারেন এই লিংকে: <a href="http://cpbook.subeen.com/">http://cpbook.subeen.com/</a></p><p><strong>প্রশ্নঃ অ্যান্ড্রয়েড প্রোগ্রামিংয়ের জন্য জাভার কোন ভার্সনটি মাথায় রাখা উচিৎ?</strong></p><p>উত্তরঃ অ্যান্ড্রয়েড জাভা ৭ এর সবগুলো ফিচার সাপোর্ট করে। জাভা ৮ এর সবগুলো না হলেও একটা বড় অংশ সাপোর্ট করে। জাভা ৮ এর নতুন ফিচারগুলো সাপোর্ট করার জন্য অ্যান্ড্রয়েড একটি নতুন কম্পাইলার ব্যবহার করে নাম Jack. বিস্তারিত পাওয়া যাবে এই লিংকে: <a href="https://developer.android.com/guide/platform/j8-jack.html">https://developer.android.com/guide/platform/j8-jack.html</a></p><p><strong>প্রশ্নঃ জাভার এন্টারপ্রাইজ এডিশন কী?</strong></p><p>সাধারণত অনেক বড় ধরণের ব্যবসা প্রতিষ্ঠানে ব্যবহৃত অ্যাপ্লিকেশনগুলোতে এন্টাপ্রাইজ শব্দটি ব্যবহার করা হয়। বর্তমানে করপোরেট ইনভাইরনমেন্টে এন্টারপ্রাইজ অ্যাপ্লিকেশন বলতে খুব জটিল, ডিস্ট্রিবিউটেড, কম্পোনেন্ট বেইজড এবং মিশন ক্রিটক্যাল (mission-critical) অ্যাপ্লিকেশন বোঝায়। মিশন ক্রিটিক্যাল অ্যাপ্লিকেশন হলো সেগুলো, যেগুলো কোনো একটি বিশেষ ব্যবসায়িক উদ্দেশ্যে অ্যাপ্লিকেশনটি ব্যবহার করা হয়, যার উপর সম্পূর্ণ ব্যবসাটি নির্ভর করছে। কোন কারণে অ্যাপ্লিকেশনটি কাজ না করলে ব্যবসাটি ক্ষতিগ্রস্থ হয়। এগুলো বিভিন্ন ধরণের প্লাটফর্মের জন্য তৈরি করা হয়, এবং করপোরেট নেটওয়ার্কস, রেসট্রিকটেড নেটওয়ার্কস, ইন্টারনেটের মাধ্যমে ব্যবহার করা হয়, এগুলো খুব ইউজার ফ্রেন্ডলি, ডেটাসেন্ট্রিক, সিকিউরড, এডমিনিস্ট্রটিভ হয় এবং সহজে ম্যানিপুলেট করা যায়। মোটকথা এন্টাপ্রাইজ অ্যাপ্লিকেশন হলো খুব কমপ্লেক্স অ্যাপ্লিকেশন। যেমন- ডাটা স্টোরেজ করা এবং ইউজার রেসট্রিকটেড করা, কাস্টোমার ইনভয়েস, ফ্লাইট বুকিং করা, ব্যাংকিং সিস্টেম অটোমেশন, হেল্থ কেয়ার সিস্টেম এগুলো এন্টারপ্রাইজ অ্যাপ্লিকেশনের উদাহরণ। এগুলোর মাল্টিপল ইন্টারফেজ থাকে পারে, রিমুট কমিউনিকেশন করতে পারে, উন্নত ধরণের গ্রাফিক্যাল ইউজার ইন্টারফেজ থাকে। এটি জাভা স্ট্যান্ডার্ড এডিশনের উপর ভিত্তি করে তৈরি ওয়েব এবং অনেক বড় মাপের এন্টারপ্রাইজ অ্যাপ্লিকেশন তৈরি করার জন্য যে সব কম্পোনেন্ট দরকার হয় তার একটি বিশাল প্যাকেজ। এগুলোকে আলাদা করে নাম দেওয়া হয়েছে জাভা এন্টারপ্রাইজ এডিশন (JEE)। উদাহরণস্বরূপ এর কম্পোনেন্টগুলো হলো-</p><ul><li>Servlets</li><li>Java Server Pages (JSP)</li><li>Java Server Faces (JSF)</li><li>Enterprise Java Beans (EJB)</li><li>Java Transaction API (JTA)</li><li>Java Persistence API (JPA)</li><li>RESTful Web Services (JAX-RS)</li><li>Bean Validation</li><li>Unified Expression Language (EL)</li><li>Context and Dependency Injection (CDI)</li><li>Java Message Service message queue API’s (JMS)</li><li>Java WebSocket</li><li>JSON Processing API (JSON-P)</li><li>etc.</li></ul><p>কিছু এন্টারপ্রাইজ অ্যাপ্লিকেশনের উদাহরণ হলো -</p><ul><li>কাস্টোমার রিলেশনশিপ ম্যানেজমেন্ট</li><li>এন্টাপ্রোইজ রিসোর্স প্ল্যানিং</li><li>কর্পোরেট আইডেন্টি ম্যানেজমেন্ট</li><li>কল সেন্টার ও কাস্টোমার সাপোর্ট অ্যাপ্লিকেশন</li><li>হেল্থ ইনফরমেশন সিস্টেম</li><li>অটোম্যাটেড বিলিং সিস্টেম</li><li>ফিনান্সিয়াল, অ্যাকাউন্টিং অ্যাপ্লিকেশন</li><li>এন্টাপ্রোইজ কন্টেন্ট ম্যানেজমেন্ট</li><li>বিসনেস প্রসেস ম্যানেজমেন্ট</li><li>বিসনেস ইন্টেলিজেন্স সফটওয়্যার</li><li>হিউমেন রিসোর্স ম্যানেজমেন্ট</li><li>ডকুমেন্ট ম্যানেজমেন্ট সিস্টেম</li><li>ইন্টারনেট পোর্টাল</li></ul><p>ইত্যাদি।<br>জাভা এন্টারপ্রাইজ এডিশন নিয়ে দ্বিমিকের এই কোর্সটি দেখা যেতে পারে। লিংক: <a href="http://dimikcomputing.com/course/javaee-online-course/">http://dimikcomputing.com/course/javaee-online-course/</a></p><p><strong>প্রশ্নঃ জাভা প্রোগ্রামিং বইয়ে কী কী আছে ?</strong></p><p>উত্তরঃ একজন নতুন শিক্ষার্থীর জাভা প্রোগ্রামিং ভাষার যে যে বিষয়গুলোর দিকে নজর দেওয়া উচিৎ সে বিষয়গুলোই এই বইয়ে আলোকপাত করার চেষ্টা করা হয়েছে। বইটি মূলত যারা ইতিমধ্যে একটি প্রোগ্রামিং ভাষা যেমন সি প্রোগ্রামিং ভাষার কিছুটা ধারণা আছে এবং নতুন একটি প্রোগ্রামিং ভাষা বিশেষ করে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ভাষা শিখতে চায় তাদের উদ্দেশ্য করে লেখা হয়েছে। এতে অনেকগুলো বিষয় খুবই গুরুত্বপূর্ণ হওয়া সত্যেও বাদ দেওয়া হয়ছে। যেমন — থ্রেড (Thread), জাভা মেমোরি মডেল (Java Memory Model), অ্যানোটেশন প্রসেসিং (Annotation Processing), ল্যামডা এক্সপ্রেশন (Lambda Expression), নেটওয়ার্কিং (Networking) ইত্যাদি। তবে এগুলোর সবগুলো এডভান্স জাভা প্রোগ্রামিংয়ের জন্য প্রয়োজন হয়। পরবর্তী খণ্ডে যুক্ত করার ইচ্ছা পোষণ করছি।</p><p>বইটি সম্পর্কে আরো বিস্তারিত পাওয়া যাবে এই লিংকে: <a href="https://goo.gl/FpfSvO">https://goo.gl/FpfSvO</a></p><p><strong>প্রশ্নঃ ওয়েব প্রোগ্রামিংয়ের ক্ষেত্রে জাভার গুরুত্ব কতটুকু?</strong></p><p>উত্তরঃ বর্তমানে সব সফ্টওয়্যারগুলোই মূলত ওয়েব বেইজড হয়ে থাকে। ওয়েব বেইজ অ্যাপ্লিকেশন গুলোর দুটো অংশ থাকে। এক- ব্রাউাজারে রিপ্রেজেন্টেশন যাকে ক্লায়েন্ট সাইড বলা হয়। দুই- ব্যাকএন্ড প্রোগ্রামিং। ক্লায়েন্ট প্রোগ্রামিংয়ের জন্য জাভাস্ক্রিপ্ট ছাড়া আর কোনো উপায় এখনো বের হয়নি। সুতরাং আপনি যদি ওয়েব প্রোগ্রামিং ক্ষেত্রে ক্লায়েন্ট সাইডে কাজ করতে চান, তাহলে জাভাস্ক্রিপ্টের প্রতি গুরুত্ব দিতে হবে। জাভা মূলত ব্যবহার হয় ব্যাকএন্ড প্রোগ্রামিংয়ের ক্ষেত্রে। উপরের একটি প্রশ্নের উত্তরে জাভার ব্যবহার উল্লেখ রয়েছে। এছাড়া জাভা কেনো শেখা উচিৎ বা কোথায় কোথায় ব্যবহার হয় তার জন্যে আগের একটি পোস্ট দেখে নিতে পারেন। লিংক: <a href="http://www.bazlur.com/2017/01/why-should-we-learn-java.html">http://www.bazlur.com/2017/01/why-should-we-learn-java.html</a></p><p><strong>প্রশ্নঃ আমাদেরকে জাভা প্রথম ল্যাংগুয়েজ হিসেবে শেখানো হয়েছে। এতে কী কোনো অসুবিধা রয়েছে? গ্রাফিক্যাল ইউজার ইন্টারফেইসের ক্ষেত্রে কি টুল ব্যবহার করা উচিৎ নাকি হাতে ধরে সব কোড লেখা উচিৎ ?</strong></p><p>উত্তরঃ প্রথমত, কোনো অসুবিধা নেই। দ্বিতীয়ত, শেখার ক্ষেত্রে হাতে ধরেই করতে শেখা উচিৎ। এতে কীভাবে গ্রাফিক্যাল ইউজার ইন্টারফেইস তৈরি করা হয় তার ভেতরের বিষয়গুলো জানতে পারবেন। তবে যখন বড়ো প্রজেক্ট করা প্রয়োজন হয় এবং সময়ের স্বপ্লতা থাকে, তখন টুল ব্যবহার করায় উত্তম।</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=13e8a10d137f" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>