Java හි බලය භාවිතා කර, Windows, Mac, සහ Linux මත ක්රියාත්මක වන අලංකාර Desktop යෙදුමක් (Application) ගොඩනගමු.
වෙබ් යෙදුම් (Web Applications) ලෝකය শাসন කරන අතර, පරිගණකය මත සෘජුවම ක්රියාත්මක වන Desktop යෙදුම් වලට තවමත් ඉතා වැදගත් ස්ථානයක් හිමිවේ. **Java** යනු "Write Once, Run Anywhere" (එක් වරක් ලියන්න, ඕනෑම තැනක ක්රියාත්මක කරන්න) යන ආ мото वाक्यය යටතේ, ලොව පුරා දැවැන්ත ව්යාපාරික පද්ධති, Android යෙදුම්, සහ විද්යාත්මක ගණනය කිරීම් සඳහා භාවිතා වන අතිශය බලවත් සහ ස්ථාවර ක්රමලේඛන භාෂාවකි.
JavaFX** යනු Java භාෂාව භාවිතා කර, නවීන, ආකර්ෂණීය, සහ cross-platform (Windows, Mac, Linux යන සියල්ලේම ක්රියාත්මක වන) desktop යෙදුම් නිර්මාණය කිරීමට ඇති නිල රාමුවයි (Framework). එය, පරිශීලක අතුරුමුහුණත් (User Interfaces) නිර්මාණය කිරීම සඳහා අවශ්ය සියලුම මෙවලම් (බොත්තම්, පෙළ ක්ෂේත්ර, වගු) අපට සපයයි.
මෙම නිබන්ධනයෙන්, අපි Java සහ JavaFX ලෝකයට පිවිසෙමින්, සරල නමුත් ප්රායෝගික **ශරීර ස්කන්ධ දර්ශක (Body Mass Index - BMI) කැල්කියුලේටරයක්** මුල සිටම නිර්මාණය කරමු. මෙම පාඩම අවසානයේදී, ඔබට JavaFX ව්යාපෘතියක් ආරම්භ කර, දෘශ්යමය වශයෙන් (visually) අතුරුමුහුණතක් නිර්මාණය කර, පරිශීලක ක්රියාකාරකම් වලට (button clicks) ප්රතිචාර දක්වන කේතයක් ලිවීමට හැකි වනු ඇත.
JavaFX සමඟ වැඩ කිරීම, Python හෝ PHP වලට වඩා මදක් සංකීර්ණ සකස් කිරීමක් අවශ්ය කරයි. නමුත්, නිවැරදි මෙවලම් සමඟ මෙය ඉතා පහසු කරගත හැක.
Java කේත ලිවීමට සහ ක්රියාත්මක කිරීමට අපට JDK එකක් අවශ්ය වේ. JavaFX සමඟ වැඩ කිරීම පහසු කිරීම සඳහා, අපි JavaFX දැනටමත් ඇතුළත් කර ඇති විශේෂ JDK බෙදාහැරීමක් භාවිතා කරමු.
Java කේත ලිවීම, දෝෂ නිරාකරණය (debug), සහ ව්යාපෘති කළමනාකරණය සඳහා IDE එකක් අත්යවශ්ය වේ. අපි මේ සඳහා ලොව ජනප්රියම Java IDE එක වන **IntelliJ IDEA** හි නොමිලේ ලබා දෙන Community Edition එක භාවිතා කරමු.
IntelliJ IDEA මගින්, JavaFX යෙදුමකට අවශ්ය මූලික ගොනු ව්යුහය (`src` ෆෝල්ඩරය, `HelloApplication.java`, සහ `hello-view.fxml` වැනි) ස්වයංක්රීයව නිර්මාණය කර දෙනු ඇත.
JavaFX හිදී, යෙදුමේ පෙනුම (UI), එහි තර්කනයෙන් (Logic) වෙන් කර තැබීමේ හැකියාව ඇත. පෙනුම නිර්මාණය කිරීමට අපි **FXML** නම් XML-පාදක භාෂාවක් භාවිතා කරන අතර, තර්කනය ලිවීමට Java භාවිතා කරමු.
FXML කේතය අතින් ලිවීම වෙනුවට, අපට **Scene Builder** නම් දෘශ්යමය, drag-and-drop මෙවලම භාවිතා කළ හැක. IntelliJ IDEA හි නවතම සංස්කරණ වල Scene Builder අන්තර්ගතව ඇත.
අපගේ Java කේතයට මෙම UI උපාංග පාලනය කිරීමට නම්, අප ඒවාට අනන්ය නම් (IDs) ලබා දිය යුතුය.
දැන් අපි පරිශීලකයා බර සහ උස ඇතුළත් කර බොත්තම එබූ විට, BMI අගය ගණනය කර පෙන්වන Java කේතය ලියමු.
ඔබගේ IntelliJ IDEA ව්යාපෘතියේ, `HelloController.java` ගොනුව විවෘත කරන්න. FXML හි අප ලබා දුන් `fx:id` වලට අදාළව, Controller පන්තිය තුළ ක්ෂේත්ර (fields) නිර්මාණය කළ යුතුය.
package com.example.bmicalculator;
import javafx.fxml.FXML;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.control.Button;
public class HelloController {
@FXML
private TextField weightField;
@FXML
private TextField heightField;
@FXML
private Button calculateButton;
@FXML
private Label resultLabel;
}
මෙහි `@FXML` annotation එක මගින්, මෙම Java ක්ෂේත්රය, FXML ගොනුවේ ඇති අදාළ `fx:id` එක සමඟ සම්බන්ධ වන බව JavaFX හට දන්වයි.
Scene Builder වෙත නැවත ගොස්, `Button` එක තෝරන්න. `Code` පැනලයේ, `On Action` කොටුවේ, method එකක් සඳහා නමක් (උදා: `calculateBMI`) ටයිප් කර Enter ඔබන්න. ඉන්පසු, `HelloController.java` ගොනුවේ, එම නමින් method එකක් නිර්මාණය කරමු.
public class HelloController {
// ... আগের fields ...
@FXML
protected void calculateBMI() {
// ගණනය කිරීමේ තර්කනය මෙතනට එයි
}
}
දැන් අපි `calculateBMI` method එක සම්පූර්ණ කරමු.
@FXML
protected void calculateBMI() {
try {
// 1. TextField වලින් string අගයන් ලබා ගැනීම
String weightStr = weightField.getText();
String heightStr = heightField.getText();
// 2. String අගයන් double (දශම සංඛ්යා) බවට පරිවර්තනය කිරීම
double weight = Double.parseDouble(weightStr);
double heightInCm = Double.parseDouble(heightStr);
// 3. උස cm සිට m වලට හැරවීම
double heightInM = heightInCm / 100.0;
// 4. BMI අගය ගණනය කිරීම (Formula: weight / (height * height))
double bmi = weight / (heightInM * heightInM);
// 5. ප්රතිඵලය දශමස්ථාන දෙකකට සීමා කිරීම
String formattedBmi = String.format("%.2f", bmi);
// 6. ප්රතිඵලය සහ වර්ගීකරණය resultLabel එකේ පෙන්වීම
String category = getBmiCategory(bmi);
resultLabel.setText("Your BMI is: " + formattedBmi + "\nCategory: " + category);
} catch (NumberFormatException e) {
// පරිශීලකයා සංඛ්යා නොවන දෙයක් ඇතුළත් කළහොත්...
resultLabel.setText("Please enter valid numbers for weight and height.");
}
}
// BMI වර්ගීකරණය ලබා දෙන සහායක method එකක්
private String getBmiCategory(double bmi) {
if (bmi < 18.5) {
return "Underweight";
} else if (bmi < 24.9) {
return "Normal weight";
} else if (bmi < 29.9) {
return "Overweight";
} else {
return "Obesity";
}
}
මෙහිදී `try-catch` block එකක් භාවිතා කර ඇත්තේ, පරිශීලකයා අකුරු වැනි සංඛ්යා නොවන දෙයක් ඇතුළත් කළහොත්, වැඩසටහන බිඳ නොවැටී (crash), දෝෂ පණිවිඩයක් පෙන්වීමටය. මෙය ශක්තිමත් (robust) යෙදුම් නිර්මාණය කිරීමේදී ඉතා වැදගත් වේ.
දැන් සියල්ල සූදානම්! IntelliJ IDEA හි ඉහළ දකුණු කෙළවරේ ඇති කොළ පැහැති "Run" බොත්තම (▶) ක්ලික් කරන්න. ඔබගේ BMI Calculator යෙදුම නව කවුළුවකින් විවෘත වනු ඇත. විවිධ බර සහ උස අගයන් ඇතුළත් කර, "Calculate BMI" බොත්තම ඔබා එය නිවැරදිව ක්රියා කරන්නේදැයි පරීක්ෂා කරන්න.
සුබ පැතුම්! ඔබ Java සහ JavaFX භාවිතා කර, ඔබගේ පළමු, සම්පූර්ණ, cross-platform desktop යෙදුම සාර්ථකව නිර්මාණය කළා. මෙම ක්රියාවලියේදී, ඔබ ඉතා වැදගත් සංකල්ප රැසක් ප්රායෝගිකව අත්විඳා ඇත.
මෙය desktop යෙදුම් නිර්මාණ ලෝකයේ ඔබ තැබූ පළමු පියවරයි. ඔබට මෙම යෙදුම තවදුරටත් දියුණු කළ හැක: CSS භාවිතයෙන් යෙදුම අලංකාර කිරීම, විවිධ මිනුම් ඒකක (pounds, inches) සඳහා සහාය එක් කිරීම, හෝ ප්රතිඵල ඉතිහාසයක් (history) සටහන් කර තබා ගැනීම වැනි දේ අත්හදා බලන්න.
ඊළඟට කුමක්ද? Desktop යෙදුම් වලින් නැවත වෙබ් ලෝකයට පිවිසෙමින්, අපගේ මීළඟ නිබන්ධනයෙන්, PHP භාෂාව සහ MySQL දත්ත සමුදාය භාවිතා කර, දත්ත සමුදායක දත්ත ඇතුළත් කරන, වෙනස් කරන, සහ මකා දමන (CRUD) සරල වෙබ් යෙදුමක් ගොඩනගන ආකාරය ඉගෙන ගනිමු!